Introduce topology class for modular simulator
The topology object owns the local topology and holds a pointer to the global
topology owned by the ISimulator.
The local topology is only infrequently changed if domain decomposition is
on, and never otherwise. The topology therefore offers elements to register
as ITopologyClients. If they do so, they get an updated local topology whenever
it is changed, and can rely that their copy is valid until the next update. The
domain decomposition element is defined as friend class to be able to update
the local topology when needed.
This commit is part of the commit chain introducing the new modular
simulator. Please see docs/doxygen/lib/modularsimulator.md for details
on the chosen approach. As the elements of the new simulator cannot all
be introduced in one commit, it might be worth to view Iaae1e205 to see
a working prototype of the approach.
Change-Id: I89e4006809ac74785205c549781a90b2d8233688