Fix asynchronous client-side validations

Additional fixes for asynchronous client-side validations. All
elements of the hierarchy, from validation functions through pages,
return a deferred value that becomes 'success' when validation was
completely successful.

At the component and validation function levels the unsuccessful
return value is a list of error messages, at the page level it is
false.