Restructure templates for easier modifications

Top-level templates are now wrappers around extendable templates
(prefixed with '__'). To modify templates you can create a
template with the same name as a top-level template that extends
the corresponding extendable template. This allows for easy
modifications without circular template inheritance issues.
Update template documentation