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

If all you actually care about is the `ctrl.$pending` is empty or not, it seems redundant to have a `pendingCount`