Remove support for constructing object types

The previous support for constructing object types from the factory was
incorrect and stemmed from my confusion about how Object fit into the
type system of puppet. Object should not be available to most users of
the type system and so is being removed. If this changes in the future,
then it can be put back in.
Support parameterized collection types in type specifications

The previous support for type specifications in the language did not
allow for parameterized collection types. This adds support for those
types.