Introducing the Hydrator

This will require another rewrite of all forms, all controllers using forms and some entities.
Yay me.

Before the usage of hydrators, the controllers were responsible for retrieving the form data and populating the entities while the forms were responsible for getting the data from the entities into their elements. This behaviour is now centralised in the hydrators.

This simplifies the controllers. They no longer need knowledge of the structure of the forms, the name of a particular element etc. The forms and the forms are essentially decoupled.

It also simplifies the forms. No more `populateFromAcademic` etc. The form simply defines which hydrator it uses and which object to fetch data from and the rest is done automatically.

One drawback is that the hydrator is coupled to the form. Not directly, as the hydrator doesn't know which form(s) use(s) it, but the structure of the data arrays it gets/returns are linked to the structure of the forms.