Invoke pegjs with --cache to get an efficient parser

Without --cache, pegjs produces a straight recursive descent parser,
with can take exponential time (and apparently does for our grammar).