Start checking types, and more const testing.

Adds the most basic of checking for types, just what is necessary to
finish testing const specs. Fixed a few bugs while at it:
- Call check recursively on the new nodes returned from Identifier.Check.
- Error in const spec if types are *not* assignable, not if they *are* assignable.
- If const spec is typed, set the type of it's assigned value.
Test multiple error multiplicity.

Report multiple, distinct errors, but don't report the same error multiple times.
Account for untyped types in IsRepresentable.

Also fixed two bugs:
1) Floats and complexes can represent runes, which are just ints anyway.
2) Integers can represent floats and complexes that are just integers.
Remove RuneLiteral, use IntegerLiteral instead.

The rune type is an alias for int32. Rune literals behave the same as
integer literals. Having a distinct AST node for RuneLiteral simply
creates extra, unnecessary cases.
Test types resulting from Expression.Check.
Merge pull request #54 from velour/check

More testing for const spec Check, remove RuneLiteral, fix IsRepresentable for untyped "types."