Template node runtime: phase 3 - keep macros along with their template node
Don't treat TemplateProcessingFailureException as a special case of GenerationException, rather as a failure, which can (but not necessarily should) be handled. Long throws clause is inconvenient, throws with generic GenerationException doesn't really help to track potential variety of exceptional cases.