Labels

Inputs don't have labels. The heading (h4) should really be a label instead.

This pull request also adds id attrs to inputs, so we can target this with a for attr on the label, not only for accessibility, it is nice to be able to click the label to focus the field.

If there are mutiple fields within the field (eg repeatable), the main label refers to the first item. 

Issue: if there are mutilple fields which have their own labels (eg radio), the label title has a for attribute which refers to nothing. Is this a problem? Better than before I guess.

The only way I can think round this is for field subclasses can override the field title method in the field abstract class.