[MAT-437] stub code for mldivide

This commit contains an initial shot at the implementation
and translation of the mldivide code. Considerable further
work and testing is required.
[MAT-437] Additional fixes to mldivide runner.

This commit contains additional work on the mldivide code and
the provision of a large number of unit tests. Main changes are
a swathe of bug fixes and the addition of strongly typed enums
for enum constant used in flow control.
[MAT-437] java tests added.

Contained within are a set of tests for the java wiring
to the mldivide() operation.
[MAT-437] Respond to PR comments.

Specifically this:
- Swaps cout for cerr
- Fixes 2 typos
- Moves that exclamation mark in README.md that has been glaring
at me for weeks.
[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.