Refactor so Node is not a pointer

This allows proper node comparability
Update topological sort algorithms to use new non-pointer Nodes
Fix up all tests; disallow Node with 0 Id
Add full Dijkstra path test