feature(change detection): implement barebone ChangeDetector

fixes #39 

@mhevery could you pease review this
we need to set previous value to `this` and we will know that `this` is a special state which will always cause a change detection to fire.