Merge pull request #41 from velour/predeclared

Use different types for different predeclared identifiers.
Add Identifier.decl.
Add some type property functions.

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

This required renaming fields of a bunch of AST nodes so that they weren't called Type.
Add TestTypeUnderlying.
Add TestTypeIdentical.
Implement more of Type.Identical and its test.
Add Check methods to Expression nodes.

Currently they are all unimplemented.
Check Literal and Identifier nodes.
Add constSpecView.Check.