add distributed particle solver.

I haven't extensively tested the new code, but it should be reasonably stable.
With this version, a bunch of fancy C++ features are being used, more than
before, so a series of efficiency tests are to follow, and then the shiny new
features are to be thrown out if they prove costly...
I do believe the use of base classes makes maintaining the code an easier job
This tag has no release notes.