Added method to apply a Declaration into a ProducedType #226
ClassOrInterface: support values, fixed type descriptors #226
InterfaceType: removed bogus type parameter #226
Introduced AppliedProducedType, made AppliedClassType Callable and implement it, removed type args on ClassOrInterface, ClassOrInterfaceType

Declaration now represents things which don't have their type parameters bound yet, like source code
declarations. ProducedType represents applications of declarations with open type arguments (such as a
TypeParameterType), such as the supertype of Sequence<T> which is Sequential<T>. Since some type
arguments may be open, these types cannot be parameterised.

AppliedProducedType represents applications of declarations with no open type arguments, such as
the supertype of Sequence<String> which is Sequential<String>. You can apply the type parameters
of a Class with apply(AppliedProducedType*), which give you a typed AppliedClassType<T> that you can
then invoke.

Don't worry the names will change in time, and AppliedClassType starts looking more and more like
Gavin's original Class interface.