feature(change detection): implement barebone ChangeDetector

fixes #39 

@mhevery could you pease review this
I think we need to pass both previous and next value. It would be nice if both could be in the record. I think we should pass int current value and record. The record will contain the old value. and we will not update the old value until after the call to dispatcher.