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.
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.
remove cell size check