[bug 1003288] Add user_agent field to API
[bug 1003288] Add user-agent to FxOS form
[bug 991291] Fix css files

We had bits of css in a bunch of places it shouldn't have been. This
moves things around so they're easier to find since they're in places
related to the things that use them.
Fix more css/js issues

* moves fxos_feedback files out of the mobile/ directories
* nixes the mobile thanks which wasn't being updated and was out of date
* copies vendor_prefix.less to feedback/static/css/lib so we can use it
  there since jingo-minify runs in two different modes: like jekyll and
  hyde
* copies base/static/css/mobile/base.less to
  feedback/static/css/feedback_base.less since they're really two
  different things and separating them makes it way easier to restyle
  feedback forms without touching random parts of the site much like
  it's nice to get a footrub without also getting a lobotomy
[bug 975140] Add source and campaign to api
[bug 971369] Automated Gengo machine translation

* adds automated Gengo machine translator
* adds Gengo API wrapper
* adds tests
* adds some statsd calls so we can sort of see what's going on

The tests are a little goofy since they're very mocked so as to not
require public and private keys to run.

This infrastructure doesn't work at all unless you have working public
and private keys from Gengo. If you don't, then when it goes to auto
translate, it'll throw a GengoConfigurationError.

This is a first pass. If we can't guess the language of the text, then
we don't do anything with it. Further, if there's an error with machine
translation, we don't do anything more with it.
[bug 971369] Add translated description to response view
[bug 971369] Fix gengo admin view

This tweaks the gengo admin view so that it shows the products that are
enabled for Gengo machine translation.
[bug 971369] Add spot translation

* adds ability to translate a specific response from the response view
* reworks the gengo infrastructure so that it knows about supported
  langauges and handles edge cases like when the guesser guesses an
  unsupported language

Note: The spot translation view is hard-coded to use gengo_machine
translator and it also doesn't return any messages which sucks from
a UX point of view. It's here as a prototype, hence the big note.
[bug 971369] Make code better

* make GENGO_LANGUAGE_CACHE a tuple value rather than a list so it's not
  mutable
* tweak the "use an existing translation if we have one" code so that
  it's a little more efficient and has a statsd call so we can monitor
  it