feat(dirty_checking): implement chunk of dirty checking behaviour

This is a tad buggy, unfortuneately. While the field dirty checking tests behaviour appropriately,
there is a bit of an issue with the list and map watching behaviours. I'm currently working on
correcting the list watching behaviour, by double checking my implementation of the algorithm
against the Dart original. Essentially, what is happening is, deleted objects are forgetting that
they've been deleted (their previousIndex is not being set correctly). I don't expect this bug to
take long to sort out, but clearly this is not quite ready for prime time.

I have plans to refactor much of this, as the es6 classes don't make a lot of sense to use. They are
rather clunky, and are probably hurting performance more than helping. I will also make a point to
rewrite the algorithm docummentation in detail based on Misko's notes, so that this is more
maintainable.