Add Bellman-Ford shortest path search

Bellman-Ford shortest path search allows to fin shortest paths
for graphs contatining negative weights. But it doesn't work if graph
has negative cycle. This implementation is improved, using queue for
mainain vertexes which calculated distance to was changed. Every turn we
only need to consider the vertexes with changed distance.

It provides O(E+V) complexity in typical case, and O(EV) complexity in
worst case. Also it takes additional O(V) extra space for queue.