Improve Form validation for subclasses to implement business and cross-field validation

Details

Description

Its currently not possible for Form subclasses to override and implement custom business and cross-field validation logic in the #validate method, because the validate method is invoked before the Field values are processed and bound to request values.

Proposed solution is to rename the current Form.validate() method to Form.validateFileUpload (because that is what is currently does) and introduce a new empty validate method which subclasses can override. This is consistent with the approach taken by Field which also provide an empty validate method which subclasses can implement.