Added SVD solver at start.

Solves LLS problem using SVD to get correct min norm solution in under
constrained problems and as a starting point for the solver.
Refactored code.

Tried to clean up the worst of repeated code: result functions with over
9000 parameters being passed to them.  Somewhat of a start, perhaps a
struct to hold the problem that can be passed to functions?
Refactor to use struct to pass parameters around.

The internal functions had parameter list which were getting unwieldy,
these have been replaced by a struct to hold all the working arrays
rather than passing them individually.
Added test for min norm.

Updated the BVLS to use an SVD for an unconstrained solution: show that
this is necessary by adding a test for the min norm.
Minor modification to init function.

Moved some init from main bvls function to init.