Added exponents and unary minus. Seem to be working, but honestly I'm
starting to have a hard time identifying the boundary conditions.
With some help of Leif, I've refactored the arithmetic grammar. Now
adjacent elements are implicitly multiplied, unary minus still works,
precedence works, yayayayay. The grammar got a bit bulkier as a
consequence, and parsing chains will be longer (so I think that hurts
performance somewhat), but it looks like it's going to work now.

Also, got a bit started on tree-transforms, but those don't really work.
TODO on next iteration.