Move bridgedb's public GnuPG keys to …/templates/bridgedb.asc.

There was nothing else in the …/templates/static directory except for
this, so I moved them up a directory.
Change lines in strings.py to not say "(shown above)" for bridge lines.

In the emails we send out, the bridge lines are underneath the "Here are
your bridge lines:" line. Though, if we send a help email, there aren't
any bridge lines, and so saying "(shown above)" is confusing.

Similarly, on the https://bridges.torproject.org/howto.html page, saying
"(shown above)" when there aren't any bridge lines above is confusing.
Finish incomplete doctest in bridgedb.strings.
Add email "get key" command for getting a copy of BridgeDB's GPG keys.
Add new email handling Exception classes to bridgedb.Dist.
Add a link in HTML footers to BridgeDB's public GPG keys.

This file can now be found at: https://bridges.torproject.org/keys
Add TRANSLATORS note on which strings should never be translated.

I put it here because this is the first translated string which ends up
in the gettext .pot template file, and thus it ends up being included
before any of the strings to translate.
Rewrite HTML templates to pass template namespace parameters.

In order to use translated strings from the bridgedb.strings module, we
need to pass the namespace parameters (i.e., the arguments in
HTTPServer.py to `template.render()`) from the parent template
(base.html) to the inheriting templates.

While we're at it, we should pass information on the requested lang, so
that translations don't suddenly turn off if you go to a different page,
and info on whether the page should be rendered RTL. This fixes a slight
bug where the pages deriving from
`bridgedb.HTTPServer.CaptchaProtectedResource` weren't being correctly
translated or RTL-rendered when they should be.

And also while we're at it, we should probably not do *anything* inside
of `bridgedb.HTTPServer.*Resource.render_*` methods outside of the
try/except block, because any error will be rendered as a traceback to
the client.

Additionally, we should set the content type and encoding in the headers
of every response before returning it.
Update all HTML templates to use bridgedb.strings.
Raise a BadEmail if we couldn't parse an email address in Dist.
Change email request handler in Dist to record email wait time.

This now records how long a client must wait before they are no longer
rate-limited for the email distributor.
Add bridgerequest module for abstracting info about bridge types requested.
Completely rewrite email servers.

The old bridgedb.EmailServer module has now been divided into several
modules in the bridgedb.email package.

 * FIXES #5463 by adding the last touches for email signing.

 * FIXES #7547, #7550, and #8241 by adding a welcome email which can be
   received by sending an invalid request, or by saying "get help" in
   the body of the email.

 * FIXES #11475 by using the same "How To Use Your Bridge Lines" text
   for TBB/TorLauncher which is used for the HTTP distributor (on the
   website).

 * FIXES #11753 by making email responses translatable. A translated
   response can be requested, for example, for Farsi, by emailing
   mailto:bridges+fa@torproject.org.
Fix unittest fail due to Arabic string that no longer exists.
Move test_EmailServer.py → test_email_server.py and update imports.
Move tests for getGPGContext() into the test_crypto unittest file.
Change unittests for bridgedb.email.server.createResponseBody().

This changes the unittests for EmailServer.getMailResponse() to test
bridgedb.email.server.createResponseBody() instead.
Simplify handling of incoming emails without a Subject: header.
Add unittests for bridgedb.email.server.checkDKIM().
Rewrite email.server.createResponseBody() unittests to check for new strings.