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

Base abstract template / persistence layer / base tests for partial templates.
Should null protect like `AbstractTemplate.Builder`