Merge pull request #119 from OpenGamma/MAT-437-squash

Mat 437 - implement the mldivide operation
[MAT-441] tighten svd memory management

This tightens up the svd runner memory management and fixes a
bug in the pinv runner code that used to clobber the argument
whilst computing the svd.
[MAT-441] fix segfault from overflowing loop.

This patches the overflowing loop bound in pinv(). Also fixes up
the behaviour of pinv() in the case where the argument matrix is
all zeros.
[MAT-441] fix up loop again, need 0 included.

This fixes a rather fiddly walk through the pinv() singular
values. The loop needs to include hitting zero *and* needs to
carry a flag to "skip" if non values within threshold are found.
Using an int64_t for this, negative value indicates skip and we
get zero access correctly too.