Use *virtual* TimeSolver::linear_solver()

This should also be delegated to the core solver by the adaptive time
solver classes