Add Expression.Type.
Add NilLiteral and BoolLiteral.
Add IsRepresentable.
Add IsAssignable.
Add Literal.Type and Identifier.Type

By default, literals are untyped constants. However, they can be given
a type via a conversion node. For example, int64(0) is an
IntegerLiteral with a value of 0 and a type of int64 after constant
folding.

Instead of storing the type on the identifier, it's computed. I choose
this, because it is easy to compute it after declarations are linked
by Check. Also, Identifiers are used throughout the AST for things
that aren't typed, for example ImportSpecs have Identifiers. It seems
wasteful and misleading for all Identifiers to have a type field.
Add TestIsAssignable.
Fix gok.sh warnings.
Merge pull request #46 from velour/assignable

Add IsAssignable and friends.