Introduced customisable elements to the form - need to amend this commit once done, just saving to github for now.

Element are sub-plugins that have the same ability as a core plugin, such as creating tables, capabilities and performing upgrades.
Currently elements can define -
* How the form elements are rendered when it is added to a customcert.
* How the elements are validated and saved in the database.
* How the element is rendered on the PDF.
* How the element handles removing database data when it is deleted.