Sort the network graph both by commit date and topographically
What does this MR do?
- 
Previously (!10936 (merged)), we sorted commits for the network graph by date, which seemed to work okay. 
- 
The one edge case where this failed was when multiple commits have the same commit date (for example: when a range of commits are cherry picked with a single command, they all have the same commit date [and different author dates]). 
- 
Commits with the same commit date would be sorted arbitrarily, and usually break the network graph. 
- 
This commit solves the problem by both sorting by date, and by sorting topographically (parents aren't displayed until all their children are displayed) 
A more detailed explanation is present here: https://gitlab.com/gitlab-org/gitlab-ce/issues/30973#note_28706230
Are there points in the code the reviewer needs to double check?
- The spec added in graph_specruns in quadratic time, but I thought this was okay because it deals with a small number of items. Please feel free to disagree. :)
- Are there any cases where the network graph might break even with this dual sorting strategy?
Screenshots (if relevant)
Before
After
What are the relevant issue numbers?
Closes #30973 (closed)
Tasks
- 
Investigation - 
Reproduce the issue 
- 
Does it happen on 9.0.0as well
- 
What about earlier versions? 
 
- 
- 
Implementation 
- 
Tests - 
Added 
- 
Passing 
 
- 
- 
Meta - 
CHANGELOG entry created 
- 
API support added
- 
Branch has no merge conflicts with master
- 
Squashed related commits together 
- 
Added screenshots 
- 
Check for clean merge with EE 
- 
Documentation added/updated
 
- 
- 
Review - 
Reviewer 
- 
Maintainer 
 
- 
- 
Wait for merge 

