Expose/add factory methods for all TypeName implementations.

This should probably have a signature of `TypeName first, TypeName second, TypeName... rest`