Added complex arithmetic contracts.

@bsoetaer 
Yeah, that's what I thought too, but when the tests failed, I realized that the result was actually a _real_ matrix with the same values as the imaginary part of the input matrix.  `conjugate`, `imaginary` and `real` are all exercised in the test suite.