Partial refactoring in preparation for lambda lifting.

* Handling of modules (and multiple lets) directly in typer
* fixed scalac crash on odd types
* Adding Module/ModuleTyped to AST.
* Outline lambda-lift mehtod and issue error when it's hit.
Expose JVM type information with known types.

* Improve method calling code to ensure correct # of arguments exist
* Delineate method calls vs. lambda calls and leave lambda calls as exceptions.
* Improve TypedTrees to have a relative notion of how/where to call methods to obtain expression values.
First half of lambda-lifitng completed.  Partially applied functions, now lifted into classes with captured arguments.
Adding new stage to ensure all built-in functions are lifted into standalone functions before JVM encoding.

* All built-in partially-applied functions are turned into let-expressions before
  hitting the JVM encoding.  This way, we can ensure that  lambdalifting
  can always use method handles, possible the JDK8 lifting.
Fix enormous leak in typer whereby argument unification wasn't occuring if arguments shared the same name.
lifting partially-applied functions now works.  We still don't generate enough lambda-methods though.
Lifting partial application into Function objects now works.  Tests forthcoming.
Docs and test for fully-featured curried functions.
initial type parser.
Allow types to be specified in let expressions AND verify they get used during typechecking.
updated SPEC for new type parser.
Initial lambda syntax, pre-tests.
Wrote basic tests for lambda expressions.
Attempt to update docs based on lambdas.
Merge pull request #1 from jsuereth/wip/lambda-lifting

Lambda expressions and full java-8 function lifting