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: Host variant crashes due to missing resize() of raw_array.
fix two_particles test
utility/raw_array: add reserve(), resize(), capacity()

Add very simple size-changing functions to raw_array.
Note there is no guarantee that the data stored in the array is
preserved after a calling reserve() or resize().
particle_group: add function to copy particle group into particle

This function will copy only position, image, velocity, mass, species.
Others do not make much sense in a new particle instance (e.g. id, force
or auxiliary variables).
from_region: make conversation to particle instance accessible