WIP preempt set from being called in certain situations

prevents set from being called if the value is the same as the previous value when:
1. accessor used in property.coffee is the default accessor
2. in the model

We couldn't simply use the non-default accessor, as `.get` can call `.set` and we end up in an infinite loop!

We hypothesize that this fix will result in many less accessors firing off for what is essentially a noop, hopefully leading to performance gains all around

cc @angelini @nsimmons 

Fixes #917 

TODO:

- [x] tests for new behaviour
- [x] tests for verifying that #917 is fixed