gpu: fix 'overcrowded placeholders' error

Using binning and neighbour list modules on the GPU could lead to the
error "overcrowded placeholders" followed by a simulation abort.

In order to be able to continue the simulation, resize the regarding
neighbour and binning arrays as soon as such an error is detected and
try to rebuild the lists with a lower occupancy in the same step.

Note that if the occupancy is too low, the simulation will abort
nevertheless.

This commit fixes #133206
mdsim::binning: fix memory access violoation in unit test

Changing the cell list occupancy also changes the number of binning
cells. Thus, the result of binning.ncell() is not the actual number of
cells finally used.

The memory access violoation happened because of a fixed number of
particle counters for each bin, which was too small in some cases.
mdsim.binning: revise GPU implementation

* on overcrowded placeholder event: increase cell size, but keep
  geometry and number of cells fixed

* allow for cell sizes larger than 1024 (max threads per block).
  The binning module shall not prevent the use of arbitrarily large
  interaction cutoffs.

* allow for less than 3 cells per dimension. The constraint is not
  needed here, test it in dependent modules (neighbours/from_binning)

* constructor: move logger argument to last position

* drop struct binning::default, repeat the new, hard-wired default value
  0.5 in the Lua script and in the C++ header (for unit tests, which
  need equal interfaces of host and GPU variants)

* drop unneeded class attributes and getter methods (GPU and host)

* use direct access to CUDA kernel wrapper, drop getter method

* drop CUDA symbols

* unit test: add profiling timers (for manual inspection only)

This commit refs #133206 and fixes #198808.