Faster LBFGS.

1. Use column major storage for the various matrices used by
LowRankInverseHessian. Since all the operations are on columns.

2. Use a circular buffer to keep track of history of the LBFGS updates
so that an update does not require copying the entire history. This
makes the updates O(1) rather than O(rank).

The implementation has been checked against the denoising code
where it gives numerically identical results. The overhead of the
LBFGS code is now near negligible as compared to the gradient evaluation.

On a sample problem

before 1050ms after: 630ms

Change-Id: I537ba506ac35fc4960b304c10d923a8dea2ae031
Merge branch 'master' of https://ceres-solver.googlesource.com/ceres-solver

# By Sameer Agarwal
# Via Sameer Agarwal
* 'master' of https://ceres-solver.googlesource.com/ceres-solver:
  Faster LBFGS.
use tbb instead of c++11 threads for robustness and better scheduling

Change-Id: I793597c7180052d38f523ec76f1697f97e1130a8