feat($rootScope): optionally limit depth of $watch recursion

New parameter to `angular.equals` limits depth of recursion (default is
infinite recursion).

$watch allows a new parameter to limit the depth of equals() when 
objectEquality is true. Only effects simple objects or array-like objects.

While creating many $watches is not a totally performant feature, this is
useful in the case of many nested directives which look at nested properties
of the same object, and only really need to care about a single "level" of
nested properties, or perhaps several levels.