Implement solver pools
Implement solver pools

- solvers are not freed directly, they are reclaimed by their
  solver factory

- reset() is used when available to reset a solver instead of creating a
  fresh one.

epfl-lara/stainless,epfl-lara/stainless,epfl-lara/stainless,epfl-lara/stainless