Cleanup of scanner.

Removed redundancy of keyword definitions and removed some unused token
predicates.
hm... It's an initializer list and usually, you do not put any space between the variable name and its initializer list.
Would `keywords({\n...});` be less confusing?