Rewrite the grammar to be simpler and more robust
Rewrite the grammar to be simpler and more robust

- The operator precedence rules have been greatly simplified. All
  OR-type operators (i.e. OR, NOR, XOR, XNOR) now have the same level
  of precedence. Likewise, all AND-type operators (i.e. AND, NAND) have
  the same precedence. This simplification should theoretically improve
  the performance of the parser because of the reduced recursion.
- Rule names are now camel-cased to improve readability (e.g. they are
  now more easily distinguishable from expression labels)
- The grammar is now completely case-insensitive
- Tabs and newlines are now included in the set of allowed whitespace
  characters
- Fixed the evaluation logic for the XNOR operation, which was
  previously producing incorrect results because of a typo

caleb531/truthy,caleb531/truthy