FEATURE: make form field an abstract class and add validation to subclasses

This PR looks to implement a TODO which was in FormField.php. The initial reasoning for my code was to add validation to DropdownField to ensure that the passed in value was something which is available in the options provided. Then I went a little bit further...

There are multiple instances of validation being handled in the setValue() function of the field (e.g. https://github.com/silverstripe/silverstripe-framework/blob/3.1/forms/ListboxField.php#L208 and https://github.com/silverstripe/silverstripe-framework/blob/3.1/forms/CurrencyField.php#L18) rather than in the validate function. I'm not 100% sure that these should be pulled out to the validate functionality - if so I'm happy to do so as part of this PR or another.

If this is a path which we wish to take I'm happy to go through and add validators to every `FormField` instance which I can find and clean up the docblocks on the remaining items as well - thought it would be better to get some feedback at this stage of the PR rather than doing it all and being denied. Saying that, this PR is merge able and an improvement to the core so I think that it fits the contributing guidelines :smile:
Hmm, we're talking about adding a base function that's going to ease a lot of upgrade pain and save thousands of collective keystrokes for developers that either don't want to implement a validate function or don't need any special logic.

The fact it's been repeated so many times in this PR alone shows not that it's laziness, but that it's just good to not repeat yourself for no gain.

If other fields need custom validate functions, then they should either be put in or rely on the inheritance.

Lazy developers will be lazy, why punish those that know what they're doing?