Lock ContextAware constructor as 'final'

The initContextAware hook allows subclasses to handle any needed initializations, and the final designation here assures that all subclasses have a consistent context available.
Add addClientSideValidation() method.

This will be called during form building. It will allow client side validation to be customized to match the validation that will be run server side.