title: Assert.AreEquals calls object.Equals irrespective of IEquatable implemenations
body: <p>Today when writing and running some tests, I found out that even though my class implemented an <code>IEquatable&lt;MyClass&gt;</code> interface, an <code>Assert.AreEqual(instanceOfMyClass, anotherInstance);</code> resulted in false.</p>
  
  <p>It turns out that no matter what, the <code>Assert.AreEquals</code> calls <code>object.Equals(object obj)</code> instead of the correct <code>MyClass.Equals(MyClass obj)</code> function.</p>
  
  <p>Under the assumption that there is a logical reason, what is it?</p>