implement root object property filter for observedSets

the idea here is that observed sets have a "root" object which is shared by all paths observed by the observedSet. In general, we treat any change to any observed object as a reason to check everything and verify dependencies, but this patch adds a filter so that if all changes are to the root object, but to properties on which no path depends, then we can skip doing any work.

R=arv
BUG=

Review URL: https://codereview.appspot.com/88000049