Draft: Renamed template arguments to avoid use of reserved identifiers
Identifiers starting with underscores are reserved for your compiler/stdlib vendor. In cases where the template argument without an underscore clashes with a local typedef, I've added the Type suffix, but where it was free I've just dropped the underscore.
Fixes #2205 (closed)