display translated text according to http accept header

use the http accept header to work out which language the user is
requesting and display it in that language if available otherwise fall
back to the default
save translated items using http accept

uses http accept to determine the language and then updates/created
translation objects for the saved data
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