COOPR:629 Update template APIs to support extending templates and including partials

@jwang47 Branch ready for review.
I don't think `Merger` should come from a builder method. What if we want to use multiple `Merger` implementations? I think we should instead have `Merger` be injected into whatever classes want to merge templates.