add deep equality logic to $watch
do not use $rootScope in $watch tests
watcher disposal via functions returned by $watch()