fix(lp): use randomnes to avoid stalling, make the factorization more robust, simplify the main loop in the core solver, use randomness, move more test functionality into lp.cpp, treat the settings time_limit as the total run time of the lp_revised_solver

Signed-off-by: Lev Nachmanson <levnach@microsoft.com>