Improved updating of the best iterate; fixes bug with certain warm starts

The logic for determining when to update (Xbest,ybest,Zbest) was flawed. In the case where an initial point was supplied that happened to have a small relgap and a small dual infeasibility error, but a large primal infeasibility error, the best iterate was never updated at all. The logic has been simplified significantly; now, any iterate that improves the worst-case error is accepted. Only one of the stopping criteria ("lack of progress in infeas") is affected by this change.