Don't trigger a property change unless the value changes

This is particularly useful on scenarios where the user is switching from a
form field to another using the TAB key, or just navigating through the text
using the arrow keys.

We're also watching for the value to actually become something, because we
don't want to change a `null` value into an empty string just because the user
pressed a movement key.