- Make SingleParticleContext contain a Geometry instead of a pointer to a
  Geometry. This should remove the need for copy and move constructors,
  destructor, and assignment and move assignment operators.

- Make Model inherit from SingleParticleContext and ManyBodyContext. Update:
  Probably it is better to replace pointers by member objects instead of
  inheriting.

- Make Geometry use an IndexedDataTree to store the coordinates and specifiers
  to avoid the requirement that a HoppingAmplitudeSet has been constructed
  before the Geometry can be created and set up.

- Make the SingleParticleContext contain an IndexTree that is used to perform
  the mapping between physical and Hilbert space indices to reduce the
  responsibility of the HoppingAmplitudeTree/HoppingAmplitudeSet to that solely
  related to the HoppingAmplitudes.

- Remove IndexDescriptor::setRanges() and IndexDescriptor::setIndexTree() and
  make the constructors take these as arguments instead. Because the
  IndexDescriptor is not fully initialized until the set-calls are made, and
  which set call that has to be made is determined by which format that is
  specified in the constructor, unifying them will resault in a less confusing
  interface.

- Reconsider whether WaveFunctions actually should have the functions
  getMinAbs(), getMaxAbs(), getMinArg(), and getMaxArg(). These are used by the
  RayTracer, but do not seem to have general usability. Probably the RayTracer
  should implement it's own helper functions for this, or another helper class
  should be created to provide the needed functionallity without putting the
  responsibility on the WaveFunctions.
