Add void and error types; rejigger pointer types

- Added TypeVoid for statements, which produce no type.
- Added TypeError for expressions whose arguments are incompatible.
- Pointers now derive from PBasicType instead of PInt. Since they have their own register sets in the VM, this seems to make more sense than treating them as integers.
Add Printf extension %H

- This conversion has behavior similar to %g: It automatically behaves like
  %f or %e based on the number of output characters. However, unlike %g,
  this decision is also based on what will produce the smallest string
  without truncating the output. The precision field (the * in %.*f) is
  ignored. Converting a double to text with %H and then back to a double
  should be lossless.
Add TRUE and FALSE terminals to the zcc grammar

- I can't believe I completely forgot to let the parser handle true and
  false literals.
- Consolidate all the %include blocks in zcc-parse.lemon into a single
  one, because Lemon all of a sudden decided it didn't like me having more
  than one in the grammar file.
- Added a PBool type to represent boolean values with.
Do not use GT, GTEQ, or NEQ operators in the AST.

- Since the VM doesn't directly support the GT, GTEQ, and NEQ comparisons,
  don't use them in the trees either. Instead, wrap them as LTEQ, LT, and
  EQEQ inside a BoolNot operator.
Added type conversion search routines

- PType::FindConversion() can find a path to convert one type to another.
  This is completely generic and can handle any number of conversion
  functions.
Pad PSymbolConstNumeric to ensure it's the same size as PSymbolConstString
Separate the AST from the parser state.
Add evaluation of constant unary and binary expressions

- Added ZCCCompiler class as a place to generate IR and symbols from an
  AST. Right now, all it does is simplify constant expressions into
  constant values.
- Do type promotion on the AST where appropriate.
- Added true and false tokens to the parser driver.
Set node type when nil-ing an id node.

- Nodes can't stay as type AST_ExprID if they don't also have the
  operation PEX_ID.
Allow using constants in other constants before their definitions.

- Something like this is now valid:
    const foo = bar + 10;
    const bar = 1000;
Do not share constant 1 for enum autoincrements.

- AST nodes cannot be shared, because type conversion changes them in
  place, and what's appropriate for one use is by no means appropriate for
  all uses.