Any explicit cast is NOT passed down when parsing the next thing.
Instead, the next thing is parsed as-is, and then the cast is
applied by the current function. This cleans up a lot of odd cases.
Also add more checks for different tmpl types when casting things
Add '#if 0' out code to complain on unresolved data when parsing.
Changing that will require a bunch of other updates, to add quotes
around bare words.
the tmpl_resolve() function would treat unresolved data as either
enums or strings. That will be changing to require either '::'
prefix on enums, OR quotes around non-attribute bare words.
So (ippadr)* is now invalid, as "*" can't be parsed by
tmpl_afrom_substr(). Instead, we must use (ipaddr)'*'