Optimise rendering of govspeak headers on public-facing pages

Instead of generating the govspeak headers twice (once to see if there are any; a second time to actually render them), we can save the result and reuse it. This will reduce rendering time considerably for pages that have a large amount of govspeak.

I've tried to use the existing shared partial (`shared/_govspeak_header_contents.html.erb`) where possible, but many of the formats that display the contents navigation have subtly different markup and CSS. Maybe someone with more frontend skills could have a crack at consolidating these such that they all use the same partial/markup (cc/ @fofr).
I did have it like that at first but it somehow felt better to have the partial as dumb as possible and given just the thing it needed to work. I think you're right though, making it as easy to use as possible is more helpful in the long run. Updated.