Start the implementation of template parameters.

Template parameters now parse correctly, but none of the functionality is
implemented, so using template parameters will cause the compiler to throw a
bunch of exceptions.

This commit breaks the type parameter tests. This is intentional as the type
parameters are obsolete, and have been replaced by required types.