gpu/neighbours: support multiple particle instances in from_binning

Introduce a naive neighbour list implementation that does not make
assumptions about the block size of the GPU kernel. This allows to
support different particle instances to work with from_binning.

Also extend the previous implementation to support two particle
instances -- this works only if both particle instances have the same
number of binning cells in each spatial direction and the number of
placeholders per cell of the binning modules match.
neighbour: support specification of GPU implementation

As the implementations of the from_binning kernels have different
performances on different GPUs, give full control over the used
implementation to the user.

Due to the limitations of the "shared_mem" implementation, the "naive"
implementation takes precedence, if required.
gpu/neighbours: make 'logger' parameter last parameter

All modules have the logger parameter as the last parameter, this is
just for consistency.