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

@jwang47 Branch ready for review.
Hey @jwang47 , as I understand I have to remove all Mutable collections and its setters from builders? But create setters for mutable collections inside template entities (ClusterDefaults, Compatibilities)?  So if we try to create some entity we have to construct it from builder first and after that init not mutable fields through setter of this entity?