Refactor change detection

WIP
how about `this.mode == MODE_STATE_MARKER` (I have no preference here, just bring it up to your attention). 

Also rename to just `isMarker` since most of the time you will be writing `record.isMarkerRecord`, no need repeating record.