Add shortest path algorithm based on Breadth-First Search

Works in O(V+E), which makes it the most efficient shortest-path algorithm for unweighted graphs.