[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.
[MAT-441] remove pointless copy for svd.

The svd node handles immutability of inputs correctly, no need to
copy on input.
[MAT-441] remove redundant unique_ptr usage.

There is no benefit to the use of unique_ptr in this case so it
is removed.
Merge pull request #120 from OpenGamma/MAT-441-rel010

Mat-441Fix segfault occuring in pinv()