Issue 4107: Equality with matrices

http://code.google.com/p/sympy/issues/detail?id=4107

This allows matrices to be properly used within Equality objects. Two features were added to do this:

1. Relational was changed to support objects with an `_eval_Eq` method, as suggested by @mrocklin. If creating an Equality, Relational will check for the presence of `_eval_Eq` in either argument, and fall back on the existing algorithm if the method does not exist, or returns None.
2. ImmutableMatrix had an `_eval_Eq` method added to it. It checks if the other argument has a shape matching its own, then checks if the difference between the two matrices is zero, leveraging PR #2637, to determine equality.

For my previous attempt, see PR #2625.