Support multi-line rules, comments in the middle of rules, and all other sorts of horrific behavior. Fix #19.

Surprisingly, it cleans up the RuleVisitor quite a bit.

* Had to add a couple more rules, like negative lookahead, to the bootstrapping grammar.
* Separated the notions of labels and references, which solves the problem of figuring out where a new rule starts and, as a bonus, saves some backtracking in the visitor.