Änderungen an generischen Typen

Die generischen Typen werden modifiziert um sie möglichst flexibel erweitern zu können.
Dies ermöglicht es, die Metadaten sauber in einen eigenen Typen (NodeOSM/EdgeOSM) zu verlagern. Dabei werden die Parameter für Nodes und Edges erst so spät wie möglich aufgefüllt. EdgeCpp/NodeCpp bleibt dabei erhalten (mit spezifischem Parameter). Als neue Zwischentypen wurden EdgeExtended/NodeExtended (generisch) eingefügt.

Zusätzlich sind nun auch die Typhierarchien von Graph und Algorithms so weit es geht generisch und nicht spezifisch auf EdgeCpp/NodeCpp bzw. EdgeOSM/NodeOSM festgelegt. So können diese auch ohne Metadaten leicht getestet werden.

Da diese Änderungen recht tiefgreifend sind musste ich den größten Teil des Projekts anfassen. Falls es Probleme gibt bitte ich um Kommentare.