Added contracts for eigensystem and lup decomposition.

The documentation actually shows incorrect postconditions for the lup decomposition: `l * u == m * p`.  In fact, the correct postcondition, and what appears in the unit test, is `l * u == p * m`.