refactor current solver

- change template parameter of solver
- add Solver.def and Solver.hpp to include all Solvers
- add CurrentVillaBune.def and Esirkepov.def to split implementation and forward declaration