Bug 529696 - Propagate the template-id strategy into names contained within a type template argument

This avoids expontential complexity when type template arguments inside
an ambiguous name specifier themselves contain ambiguous name specifiers.

The patch also enhances TemplateIdStrategy to allow marking and backing
up to a branch point, and uses this ability in templateArgument().

Change-Id: Ia03e9cd0bc026b02b85edc05ed327cce883d6a59
5 files changed