CIC Interpolator Rewrite

* InterpolatorAlgorithm is now an interface.
* The charge conserving current interpolator now extends the CIC interpolator because its just a refined version of it.
* The CIC interpolator was completely rewritten. It now takes into account that we are using a FDTD grid where the different fields are displaced.
* The interpolator now gives a Bz to the particle that is averaged over time. This is needed because the particle expects a Bz at integer time (just as Ex and Ey) but the field solver gives a Bz at t+dt/2. A dependency on the old Bz had to be introduced.