An extensible A* / Dijkstra implementation in Scala