adds extended i18n support

i added new user settings including preferred user language and a module tha decides what locale to set.
it uses the following priority
explicitly_requested_language || session_language || user_settings_language || browser_language