NEW: Form action handlers can now do custom validation by throwing ValidationExceptions.

NEW: ValidationResult can now store field-specific errors.
NEW: You can pass a string error message to the ValidationException constructor.
API: The session variables that Form uses to keep track of messages/validation have changed.

This is a fairly significant improvement in the flexibility with which you can define Form validation, and it shouldn't introduce too many backwards compatibility issues.  My hope is that we can get away with it for 3.1, because it's not breaking any APIs, it's only adding them.

I have deprecated a couple of things marked at 3.2, to given an indication that we should drop them.

The one thing I did deprecate was Form::messageForForm, which is a static method that just seems horrible.  I don't know if anyone is using it.