Handles template declaration of all kinds.
Also builds template declaration nodes for specializations and explicit
instantiations of classes.
Some missing things will be addressed in the follow-up patches:
- specializations of functions and variables,
- template parameters.
Three slashes for docs.