Add Observable.diff
remove trickery from diff