title: Validator.ValidateObject with "validateAllProperties" to true stop at first error
body: <p>I have a custom class (to be simple) :</p>
  
  <pre><code>using System;
  using System.ComponentModel.DataAnnotations;
  
  public class MyClass {
      [Required]
      public string Title { get; set;}
      [Required]
      public string Description { get; set;}
  }
  </code></pre>
  
  <p>I want to validate this object, and get an exception with everything not correct.</p>
  
  <p>If I do :</p>
  
  <pre><code>void Validate() {
      var objectToValidate = new MyClass { }; // Both properties are null at this time
      var ctx = new ValidationContext(objectToValidate, null, null);
      Validator.ValidateObject(objectToValidate, ctx, true);
  }
  </code></pre>
  
  <p>A ValidationException is thrown but it shows only the first error, even I specify true to the <code>validateAllProperties</code> parameter.</p>
  
  <p>if I refactor a bit my code :</p>
  
  <pre><code>void Validate() {
      var objectToValidate = new MyClass { }; // Both properties are null at this time
      var ctx = new ValidationContext(objectToValidate, null, null);
      var errors = new List&lt;ValidationResult&gt;();
      var isValid = Validator.TryValidateObject(objectToValidate, ctx, errors, true);
  
      if(!isValid) {
          throw new AggregateException(
              errors.Select((e)=&gt;new ValidationException(e.ErrorMessage)
          );
      }
  }
  </code></pre>
  
  <p>I can actually have all my errors. </p>
  
  <p>Why does the first code snippet works as expected ? Did I do something wrong?</p>