provide disassociate callback

Make the promise returned by angularFire resolved with a callback that disassociate the instance, by calling dataRef.off and unregistering $scope.$watch.

This breaks the existing promise API.  But since angularFire is to bind an object onto scope, it doesn't seem to be useful to get the same value from the promise though.