Refactor TranslatableModelForm

This is the long due rehauling of `TranslatableModelForm`.
It is basically a 2-step rewrite:
- First I rewrote the code, making sure it passed existing tests
- Then I rewrote the tests to be much more thorough (25 additional tests, 100% test coverage, almost 100% branch coverage).

The API has not changed, so no major backward incompatibilities have been introduced. Some edge cases that were inconsistent have been made consistent though, which could create some glitches with existing code relying on those inconsistencies. In the end, a lot of the logic has been handed back to Django so `TranslatableModelForm` behaves in an entirely boring, unsurprising way.

It is here for a bit of testing while it waits for me to "refactor" the documentation too.