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:
> I could create the functionality for converting all sources to arrays and then later we can work on refactoring some of the ungainly getOptions functionality in another PR

To be honest, I don't think you need to go to the effort in this PR, but it would be a good issue to open