Reorder the recursive syntax highlighting to allow code fragments to appear outside of templates, and allow recursive templates.

- Now only code fragments are the special case: they may not include templates or nested code fragments.