(GEP-107) Support the Type System

Adds parsing, validation, and linking of the Puppet Type System
to Geppetto. Types are added to the PPTP model and a corresponding
ITypeValidator is added using a MapBinder in code. This makes the
implementation extendable.

Since the semantics of the type system is described using the
type system itself, the validation of the types is also the same
validation that is used when validating expressions (although only
type expressions are validated at this point).

Several tests are also added. Some copied from the puppet pops tests
and others were invented to test constructs in the puppet
specification.