exports.apply -> async

It allows to use async preValidate and validate functions.

Details:
https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/6s6JEzJZluA

All tests are passed, seems it works
Code review is desirable