Merge pull request #34 from velour/scope

Start adding functionality to support the check pass over the AST.
Add a very incomplete Type.Identical implementation.
Add the BoolLiteral type.

Before this change, boolean literals were *Identifier nodes with
predeclared Declaration types and Names of either "true" or "false".
Determining if an identifier was a boolean constant was a lot of work.
Now it's easy to determine if something's a boolean constant, because
it will be a BoolLiteral node.
Start implementing Fold.