Add support for async validators through promises

Initially Q, when, RSVP and ES6 promises will be supported.

This closes #10 

Things todo before merging:
  * [x] Potentially clean up the code
  * [x] Look over the tests
  * [x] Update the readme with examples and info
  * [x] Try to include the Promises using `require` if not found globally
  * [x] Add more comments