generalize/refactor particle code
At the moment particles are somewhat hard-coded to use Adams-Bashforth for time-stepping. With some careful combinations of the base classes we could get around this if we really wanted to, but I think it's best if we reorganize the code a bit such that more generic temporal integration methods can be used. In particular, we will need temporal interpolation, and I would like to be able to interpolate several fields at once (such that the weight polynomials are only computed once).
This will lead to slightly more elaborate refactoring than just of the particle code, since the fields themselves at different iterations are required for temporal interpolation.
I'm creating this issue to document the process and such that we can coordinate test development.