[WIP] feat(Change Detector): Add support for collection deep watch

**Work in progress**

Add support for deep watch (collections are normally watched by ref only).
I think we should support other types of collections. For example, persistent data structures have array-like and map-like APIs, but are not arrays and maps. Object literals can be used as maps, but are not real maps. 

I think the "deep" watching should be pluggable. Maybe some sort of Map<ObjectType, ChangesObject>, so we can register new types there. And if we do it this way, maybe we should call it content watching instead of collection watching.