Validation returns a promise

This is actually a second take on the previous PR: https://github.com/dockyard/ember-validations/pull/7

I think this approach makes way more sense and it's also more robust - since we don't have to be aware of validating *after* setting a callback for the event.

It also exposes a cleaner API and allows us to get rid of those setTimeout.

What do you think? If exposing RSVP's api directly makes you uncomfortable, I could easily change the api so it looks something like:

```Javascript
user.validate(['firstName', 'lastName'], function()){
  // Do something
});
```