Move locate determination and translation code into separate module.

 * ADD new bridgedb.translations module with the following methods:

   - getFirstSupportedLang():
     Essentially the same as the original HTTPServer.getAssumedChosenLang()
     function, except that the determination of which languages are
     supported uses _lang.getLangs() instead (this has been in the _lang
     module for a long time, and was meant for that purpose).

   - getLocaleFromHTTPRequest():
     This is taken mostly from the original setLocaleFromRequestHeader()
     (in the HTTPServer module) except that there was an extra function in
     the EmailServer module, called getLocaleFromRequest() ― which was not
     in use anywhere ― which included the parsing of '?lang=' HTTP GET/POST
     arguments. The parsing of '?lang=' was taken from that function and
     added to the original functionality of
     setLocaleFromRequestHeader(). This fixes part of ticket #9678:
     "'Select Language' button on bridges.tpo".

  - getLocaleFromPlusAddr():
    Exactly the same as the original in the EmailServer module.

  - installTranslations():
    Produces a gettext translation object, with fallback languages chained
    to it in order of client preference.

  - usingRTLLang():
    Essentially the same as the original in the HTTPServer module, except
    that the parsing of supported langs again uses the _lang.getLangs()
    function, as above.

 * FIXES part of #9678: "'Select Language' button to bridges.tpo"
Add unittests for new bridgedb.translations module.
Merge branch 'fix/7550-9678-interactive-translations' into develop