Model: fast-path removed

The fast path was not checking for differences. This removes the
fast-path such that diff() is always used to check for differences in
the model.

This came up as a bug when setting an empty string repeatedly resulted
in improper model event fires.