title: Field $valid state is not updating after $setValidity(True)
body: <p>I'm using <code>ui-validate</code> for my validation rules.</p>
  
  <pre><code>&lt;input  ng-model=raw.expression 
          name="expression" 
          type="text"
          required
          ui-validate="{serversidevalid : 'validate_serverside($value)'}"&gt;
  </code></pre>
  
  <p>The validation is executed server side, the short version ... in the controller</p>
  
  <pre><code>$scope.validate_serverside = function(expression) {
  
    someValidationFactory
     .validate(expression)
     .then(function(server_error_message) { 
  
        var validity = true, 
            error_message = false, 
            input = $scope.my_form['expression'];
  
        if (server_error_message !== undefined) {
          validity = false;
          error_message = server_error_message;
        }
  
        input.$setValidity('serversidevalid',validity);
        input.$error.serversidevalid = error_message;
  
    });
  </code></pre>
  
  <p>Now, after this function is executed with a valid expression - <strong>The form's status is valid, The $error key and message are as exepected but the field's $valid / $invalid remains invalid.</strong></p>
  
  <p>How is it possible for the entire form to become valid but the field to remain invalid ? </p>
  
  <p>I tried wrapping the two last statements with <code>$scope.$apply</code> or explicitly trigger <code>$scope.$digest()</code> but the it throws an "digest already in progress". I tried wrapping the thing with <code>$timeout</code> to execute after the digest is done - same undesired result. </p>
  
  <p>appreciate some guidance here.</p>