Refactoring of the LineSearchMinimizer. 1. New LineSearchDirection interface, factory and instances. 2. Cleanup of LineSearchMinimizer to use the State and Direction objects. 3. LBFGS -> LowRankInverseHessian. 4. Refactoring of the RunCallbacks function and share it across LineSearchMinimizer and TrustRegionMinimizer. Change-Id: I19354afc6f5d6567b28918710c2012dc30ef8f32