For #25692 - Improved template parsing to be more robust.

Template parsing now handles more ambiguous cases where one or more static tokens may also appear in a key value.  If a value is ambiguous this will now get reported correctly in the error.
Completely agree - this started out as a simple list of lists but it became more complex as it needed to - I'll change it to use a simple class though as it'll make it much clearer.