Revisit history graph implementation
A new class was added to properly represent a history graph (a tree of
HistoryNodes was used until now), and the origin-revision layer algorithm
was revisited to avoid processing with a merged path in the graph.