Use a createResult() for a dedicated Result interface

Each algorithm only implements the new method which returns an
intermediary result. The dedicated Result interface implements the
common accessors and avoids running the algorithm again.
Added a BC layer for now, which forwards all method calls.
Move everything into ShortestPath\SingleSource

The new algorithms now use a smaller signature and avoid passing the
start Vertex to the ctor.
Keep a BC layer for now.