First step towards #588
One more step: add generic type arguments before adding functions so that init/new are generated correctly
More cleanups
Revert until proven guilty
Hmm in case of fire (ie. generics), use the name, not the given typeArg's name.
Finish fixing generic variants of cover templates. Closes #588.