Only write translations when class actually changed

The logic to see if a class had changed and propagate that to all translations was flawed. It over-zealously made this change any time getChangedFields reported that ClassName had changed. Because publishing an item uses forceChange, this made getChangedFields return an array that had ClassName as a changed field every time something was published.

Subsequently, Translatable would think that the class name had changed every time an English (or whatever your default locale is) record changed.  If you have a lot of translations (I have hundreds), this made publishing English nodes unbearably slow.

This change would have been trivial if all that was needed was to compare the before/after values of the array returned by getChangedFields.  However, because the record had already been written before being published and the DataObject->$record field had therefore already been updated to the new value, the before and after values were the same. To make this more obvious to future developers I added a comment that explains the situation in depth.

Before making this change I added a test case that tested the previous behavior so that I could make sure this change did not change the behavior.