P3m gpu clean

Here is the first implementation of p3m on the GPU.  Currently the implementation is only a couple of times faster than the CPU for typical systems.  The modification of the communication should make the implementation of future algorithms on the GPU significantly easier.