Refactored control creation and serialisation to be polymorphic so that DE can support custom field/control implementation