Matrix Expressions Refine

Add a refine handler for MatMul objects.  This is a prototype for what could become a larger system.

EDIT: OK, I added a bunch more.  This is no longer just a prototype.

Motivating discussion at https://groups.google.com/forum/#!topic/sympy/9RLimQ7n0Ww

TODO: needs tests