Make QR in GaussNewton faster and more accurate

Re-factored the code in GaussNewtonOptimizer so that the decomposition
algorithm sees the Jacobian and residuals instead of the normal
equation. This lets the QR algorithm operate directly on the Jacobian
matrix, which is faster and less sensitive to numerical errors. As a
result, one test case that threw a singular matrix exception now passes
with the QR decomposition.

The refactoring also include a speed improvement when computing the
normal matrix for the LU decomposition. Since the normal matrix is
symmetric only half of is computed, which results in a factor of 2 speed
up in computing the normal matrix for problems with many more
measurements than states.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569905 13f79535-47bb-0310-9956-ffa450edef68
Add Cholesky option to GaussNewtonOptimizer

Since the normal matrix is symmetric positive (semi-)definite, the
Cholesky decomposition is theoretically faster.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569906 13f79535-47bb-0310-9956-ffa450edef68