Split FormElement validation to its own method.

This provides for more granular control over what is being executed, (and means that setValue can be overridden without overriding validation)