Use partialCached to avoid any perf penalty.
TODO: limit the scope I pass to them.
I noticed a teeny tiny perf improvement after doing this, probably
because now some giant data structures only need to be generated once.
Link targets need to be focusable to work with VoiceOver.
Making <main> focusable causes some side-effects, like making the TAB
key go to the beginning of <main> instead of the element after the
currently-clicked region.
Also removes the annoying outline around "main" in some non-mainstream
browsers, without having to add extra CSS.