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).