Add a language switcher

At the moment we're limiting this to one of two languages so this also
involves adding an alternative language setting to the instance.

Also, refactor out the code to get the different languages to it's own
method which now checks the session for language and overrides the http
accept set language with that.

Plus template for language switcher, and inclusion thereof in
templates
limit the languages we allow the user to use

Only allow the user to use either the default language or the alt
language for either saving or viewing. If they aren't using either of
those then fall back to the default language.

Also, if the language isn't recognized then fall back to the default
langauge too as otherwise the language saving and display code may break
as it relies on us recognizing all the languages in the tranlsation
objects to determine if a key is a translation object
check default and alt language are valid when saving them

make sure these are languages we recognize and if not display an error
otherwise bits of the language code won't work