Remove dependence on Boost
Currently, libkleo depends on Boost for only one component (the HierarchicalKeyListModel) and for a fairly simple purpose, which is a basic topological sort of a graph to sort keys so as to ensure that parents always appear before their children.
This MR implements a basic and simple graph with the required components to replace the boost adjacency list implementation that was being used here. This means we no longer need to depend on Boost, which will help cut down on compile times by quite a bit.
This matches a similar MR in Akonadi (akonadi!87 (merged))