Keep header guards named consistently

<project-folder>_<name-of-file-split-by-underscore>_<HPP/CPP>
Clear old graph design
Add the needed graph functionality to work with the algorithms

Meaning the algorithms will work only with graphs implementing those
methods.
Update the interface so it uses sets and pairs

Pairs are better suited for representing an edge because it is basically
a pair itself. The vertices, edges, successors have no particular
ordering, therefore a sequential data structure is no needed.