Use scope.watchAST instead of scope.watch

Fixes #1110
@jbdeboer Should this also be somehow precomputed? If yes, how would you do that? I don't see a way as the `expression` is passed into this funciton and `ast` is computed then using that `expression`.