Merge pull request #1 from KiMark/master

Added new comparison operators
Improved overload procedures
New function overloading; always reduce Aurora terms

- Improved Korona function overloading. Refactored the code and
  split it into multiple functions.

- Changed Aurora terms so that the mkFoo functions in AuTerm
  always reduce the terms and check if they are well-formed.
Remove the NamedFoo classes

Remove the NamedLambda, NamedPi and NamedVar classes.
This decreases the number of conditional branches required to walk
AuTerm structures and thus keeps the code cleaner.

mkNamedPi and mkNamedLambda now directly generate the corresponding
Aurora terms.
Fix wrong coding conventions

Fixed naming convention of private members in AuFoo classes to match
that of the rest of the project.

Removed TermMap, KorNode and KorUid as they are redundant since
the last commit.
Implement lifting of Korona function arguments

Implements lifting of Mutator arguments to usual arguments.
This will allow us to implement imperative features in the functional
Korona language.
Restructured descriptors

Descriptors used to be of type List[Any]. Now they are of type
List[Product[String, Any]] which makes more sense from a semantical
point of view.

Added a flag to disable well-formedness checks during Aurora term
construction. Disabling those checks increases the performance
by an order of magnitude.
Lifting for local variables

Allows us to use variables in Korona like they are used in
imperative languages.
Error handling in the Korona compiler

Introduces errors and warnings to the Korona resolver.
Does not include parse errors.
Parser error handling

Improved the parse expression grammar parser.
Removed the PegResult class which handled errors, added the
PegError class to do that.
Moved items from PegParser to the PegItem class, created
a named class for each item.
Split Korona standard library into own file

Created libkorona directory for the Korona standard library.

Updated the Aurora interpreter so that messages can be redirected to
destinations other than System.out.
Let clauses

Implemented let clauses to give names to local expressions.
Improved let clauses

Let clauses now literally replace identifiers instead of being
syntactic sugar for lambda-apply expressions. This is necessary
for type checking in some cases.
Added double type