mdsim: add region module to select particles from a simulation domain

This module allows to select particles based on their position in the
simulation domain. Whether a particle is within a region or outside of
it, will be determined by another module, the geometry.

The GPU implementation of the selection is similar to the implementation
of the binning module, but there are only 2 bins: inside or outside the
region. After determining a "mask" (or bin) for each particle, the
particles are sorted by the bin and then the bin border is determined,
to calculate the number of particles in each bin.

The mask can also determined independently in order to enable operations
like intersections, unions, etc. of regions/particle groups.

Note that there is not yet a geometry implementation, this will follow
in a later commit.
mdsim/geometries: add cuboid geometry

Add the most simple geometry for the region module: a cubic (or
rectangular in 2D) domain.
particle_groups: add from_region

Constructs a particle group from a region. The selected particles can
either be in the region or outside of it. Both will be calculated at the
same time from the region module.

Warning: GPU variant only.