Use different types for different predeclared identifiers.
Add BoolLiteral, NilLiteral, and Identifier.decl.

These will be used for Checking Identifiers.
Add some type property functions.

Wildly incomplete and not well tested.
Add Expression.Type.

It required renaming a bunch of AST fields so that they weren't called Type.
Add Check methods to Expression nodes.

Currently they are all unimplemented.
Nothing to check for untyped literal nodes.
Add constSpecView.Check.