Added a dependency map for the build to make the code easier to understand.

generated with:
mkdire build
cmake ..
cmake --graphviz=out.dot .
dot -Tpng < out.dot > ../dependency_map.png