lua/neighbour: allow binning modules to be given as parameter

If one has more than neighbour list modules that share a common particle
instance, it will be useful to reuse the binning modules.
gpu/binning: add cell_size() member function

This function returns the current number of placeholders in the cell
list and is more explicit than getting it from the grid dimensions of
the binning module.
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.
gpu/neighbours: make 'logger' parameter last parameter

All modules have the logger parameter as the last parameter, this is
just for consistency.
remove cell size check
shared_mem: increase cell index in grid stride loop