Rewrite translation infrastructure

* this accounts for src and dest languages
* removes a lot of the scaffolding--translatable models just implement a
  generate_translation_jobs method that generates all the jobs; this
  removes the need for passing metadata around and makes it easier to
  skip unneeded translations and "do the right thing" where the "right
  thing" can vary vastly between use cases