Use scope.watchAST instead of scope.watch

Fixes #1110
Compute this in a global service, ElementBinderBuilder, instead of re-computing it for each ElementBinder.