Added recursive unwatching to the unwatchAll method

`watch(obj, fun)` watches all of the descendants of an object. `unwatch(obj, fun)` however only unwatches the children of an object (i.e. grandchildren are still watched). This fix unwatches all of the descendants of a object.