[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 am concerned here that getter isCollection() will not inline. Can we change it to a simple method call (which we know will inline)