[WIP] Improve Algorithm\ShortestPath

* [x] Do not return zero weight for root vertex and support root loop edges (BC break)
* [x] Consistently throw OutOfBoundsException for unreachable vertices (BC break)
* [x] Add Algorithm\ShortestPath::hasVertex()
* [x] 100% code coverage
* [ ] Documentation / changelog