Actually tokenize source to reason about it

Basically this is the leadup to making `watch` a keyword and accept arbitrary expressions.