Add classes to represent  directed weighted graph

Directed weighted graph class could be used to represent
real world essences like maps, routes, flight maps etc.
This class could be used for shortest paths retrieval in
future.
Add shoortest path interface
Add indexed priority queue class

Indexed priority queue allows to change, increase, decrease element's key which
is already in priority queue by it's index. Indexed priority queue implemented using
binary heap.
Add shortest path using Djikstra algorithm

Djikstra algorithm for shortest path searching uses
indexed priority queue. Algorithm complexity depends on queue
implementation. Binary heap was used for this implementaton.
It provides O(E logV) complxity.
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.
Merge branch 'feature/shortest_path' into 'devel'
Fix previous merge errors