Use existing translations where possible when saving translations

This both avoids redundant find queries and also the need to reload
at the end: our existing translations are updated as we go.

(Saves me about 100 queries per request on a certain request on
an app I have, phew.)
Don't mark a field as dirty when it's assigned the same value

Example:

    puts post.title      # => "Hello"
    post.title = "Hello"
    puts post.changed    # => []

* Also test that the field is not dirty if there were never any substantial changes

Closes #194