Unrolling solver takes an incremental solver

UnrollingSolver now uses an underlying incremental solver
and use push and pop to drive the unrolling instead of creating
a new solver each time
remove the need for innerXXX methods

Refactor the TimeoutSolver and TimeoutAssumptionSolver so
that they no longer use innerCheck methods. We now only
create solver as subclassing Solver or IncrementalSolver and
implementing the interuptible trait, and we can turn them into
TimeoutSolver at instantiation time with a mixin.