Refactor type extensions
* Add advanced interface for creating type extensions
* Add AbstractTypeExtension as base class for type extensions
* Refactor ButtonTypeExtension to use new abstract type extension
* Remove grid, help and horizontal type extensions. Support is now provided by the abstract type extension
* Add FormTypeExtension to expose form type extensions logic
* Add configuration options for abstract type extension