Enabling backward propagation in batch least-square orbit determination

As it is right now Orekit always performs forward propagation in the batch LS orbit determination algorithm.
The class "Model" implements the forward propagation in method "value", and the handler "MultiSatStepHandler" is designed only for forward propagation.
I think it would be nice to let the "Model" choose if it must run the propagation forward or backward.
In the use case where most (or all) of the measurements' dates are older than the orbit determination date, Orekit will always propagate backward a first time to the first measurement date, doing nothing; then propagate forward until the last measurement date, gathering residuals on the fly and computing a batch LS evaluation.
In my opinion it would be much more efficient to gather the residuals during the backward propagation. This would avoid propagating twice for each iteration of the batch LS.
The idea would be to implement a switch in the "Model" class. If the date of the orbit determination is closer from the date of the first measurement than from the date of the last measurement then we propagate forward. Otherwise we propagate backward.
Therefore we ensure that the "useless" propagation step is as short as possible.

(from redmine: issue id 375, created on 2018-02-14, closed on 2018-06-04)