constructor(templates = {}, fields = []) {
    this.customRegister = {}
    this.templateControlRegister = {}
    this.def = {
      icon: {},
      i18n: {},
    }
    this.register(templates, fields)
  }
customControls serves as a register for two types of custom fields supported by formBuilder
 - Custom controls defined by a template
 - Custom control defined by a field definition only

 The code takes two paths
  - Custom controls with a template will be a proxy function created to generate a controlCustom class
  - Fields without templates will map to their defined type/subtype class