Deferred validation

Added support of deferred validation in ```ActiveForm```

The ```validate``` option in ```ActiveField``` ```getClientOptions``` now has a forth parameter, ```deferred```.
This is an array which ```Deferred``` objects can be pushed into.

e.g.
An inline validator can do something like
```
['attribute', 'method', 'clientValidate' => function() {
    return 'deferred.push($.ajax("/check").done(function(data) { messages.push(data); }));';
}],
```

An image could be checked client side.
```
var def = $.Deferred();
var img = new Image();
img.onload = function() {
    if (this.width > 150) {
        messages.push('Image too wide!!');
    }
    def.resolve();
}
var reader = new FileReader();
reader.onloadend = function() {
    img.src = reader.result;
}
reader.readAsDataURL(file);

deferred.push(def);
```

Thoughts?
Wouldn't it be better if `deferreds.__proto__.add` is used?