Asynchronous client-side validations

Validation is done with jQuery Deferred objects, this should allow
individual validation option functions to return either an explicit
success/failure value as before, or to return a Deferred object.

The Deferred objects need to eventually become an explicit value
matching the same API as direct validation results.
Fix asynchronous client-side validations

'this' context is proper in all callbacks.
'serverSide' validation option can be asynchronous

The 'serverSide' validation option will use an asynchronous ajax
call if the 'async' key is set to true.
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.
Fix type in commit cebaf82f60

Mistyped 'slice' as 'split'.
Ajax calls on Submit-based validation are optional

The 'ajaxOnSubmit' option on JFormer can be used to specify whether
or not ajax-based validation options (such as 'serverSide') are
executed when validating a page / all pages upon clicking a submit
button.

The default is true (meaning ajax calls will be made).
Options prefixed with '__' are not sent to client

Otions values that might contain sensitive information can now use
a prefix of '__' on the option name to prevent the value from being
sent to clients.

Note: Options prefixed with '__' are not special-cased on the server
and server-side code will need to refer directly to the prefixed name
to make use of these variables.
Also, the option names are still sent to the client, please be careful
if those option names contain sensitive information as well.
Merge branch 'burningsea' into personal