Use scope.watchAST instead of scope.watch

Fixes #1110
Use the AST cache as well