Add Better Parse Warnings To recursive-parser Branch

@fw42 @arthurnn 
Allows the warnings to be retrieved in `:warn` mode without rendering the template.
Links up all the tags in a proper parse tree where each tag has links to all its children so it can recursively get information from them.
Note that this PR merges into the `recursive-parsing` branch.

This is necessary for situations where you want to verify a template is syntactically correct and issue warnings if it is not but without rendering it, such as a template editor.