Dijkstra's algorithm

Using dijkstra to find actually shortest ways
Couple Bug Fixes + New Design

Changed and simplified design, fixed a bug in pathfinding