Add support for async validators through promises

Initially Q, when, RSVP and ES6 promises will be supported.
Remove a unused function parameter
Add a function for trying to require a module
Try importing all the promises if not found globally
Add some comments