Added bottom type
Bugfix in subtyping, added joins + meets of types
Changes in typechecker w.r.t. Bot type
Least/greatest supertype/subtype matching
Constraint generation + bugfixes
Fixed compile error in up/down
Implemented constraint solving, reorganized things
Added constraint sets, external syntax
Added type inference (incomplete)
Added lazy version of syntax fold
Various bugfixes in inference and checker
Versions of base types suited for type inference
Modularized syntax and types

Standard types and prototypes are separate modules
each with their own `Type` families, i.e. there can't be
an accidental leakage of partial types into the typed syntax.
Same goes for external syntax and fully typed syntax.
Syntax, types and substitution functions are separated
into traits via the cake pattern as follows:

 * `TypeFamily`
   * Defines types trees, (lazy)fold, map.
 * `TypeOps`
   * Signatures for freevars, substitution on a `TypeFamily`.
 * `DefaultTypeOpsImpl`
   * Defines standard implementations for freevars and substs.
 * `TypedSyntaxFamily`
   * Defines typed expression trees, (lazy)fold, map.
 * `TypedSyntaxOps`
   * Signatures for freevars, substutition on a `TypedSyntaxFamily`.
 * `DefaultTypedSyntaxOps`
   * Defines standard implementations for freevars and substs.

The module (object) `TypedLanguage` replaces `TypedSyntax`
and `Types` and represents the standard fully typed expression
language with standard substitution and freevars notions.
Minor refactorings
Typed + external syntax share the same type family

Better modularity + avoids unnecessary `toFamily()` mappings
in type inference.
A viewer for AST trees
Better GUI based on Javascript and CSS

The syntax tree in Scala notation (modulo cosmetic changes)
is browsable and colored. Subtrees can be collapsed at will.
Type expressions are collapsed by default.
Added forgotten files
Better modularity of expressions, types and substs
Derived external syntax