[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).
same concern about inlining here. Also with this strategy we end up reading the `_mode` twice. Can we read it once and than pass it into the methods.