Promise-based validations & Multi-stage validation API for ngModel

the name of the validator should likely be something like "uniqueUsername"- you don't validate the the username is taken :)