Two small AST changes.

1) Use FunctionType for the location and Signature of a FunctionLiteral so that it can use it as its type.
2) Change ImaginaryLiteral to ComplexLiteral.
  This will simpify complex constants that have non-zero real
  components. Without a combined ConstantLiteral type, a complex
  constant would be represented as a BinaryOp node with a FloatLiteral
  and ImaginaryLiteral component. This would make constant folding more
  difficult, as it would require checking each subexpression that is a
  BinaryOp to see if it's really a complex constant. This change simply
  replaces ImaginaryLiterals with ComplexLiterals. During parsing, the
  real component is always zero: an imaginary ComplexLiteral. During
  folding, the real component can be used instead of requiring a
  BinaryOp node to glue the two components together.

Squash with AST change.
Add the scope type and pkgDecls function.
Merge pull request #34 from velour/scope

Start adding functionality to support the check pass over the AST.