feature(change detection): implement barebone ChangeDetector

fixes #39 

@mhevery could you pease review this
in general I think we should strive to not increase the size of this object. Put any additional information into mode under some bit.