feat(Change Detection): Implement collection changes

Based on https://github.com/angular/angular.dart/pull/1348 and a few parts from watch tower.

One gotcha: `MapWrapper.clear()` does not work - this needs further investigations !!

_(thanks to @vsavkin who gave me some tips for debugging)_
Quick benchmark looks promising: http://jsperf.com/map-vs-object-as-hashes/15