Apply the $watchCollection optimization
Edge case where a non-array has a property "length"
Enable tracking the original value, only when needed