Extend SubstTemplateTypeParmType to support non-canonical types.

Previously SubstTemplateTypeParmType could only keep the canonical
type.  Our hack to support template default replacement with non-canonical
type lead to the creation of SubstTemplateTypeParmType which had their
'canonical type' pointer pointing to non-canonical type.

This patch add a new data member to SubstTemplateTypeParmType to hold
the non-canonical type representation *in addition* to the canonical
type.

This fixes ROOT-5612.