Add hackish sort order preservation in the url.
Split out failure analysis code out of main.py and make it testable.  Also prepare for failure groups having more than one test.
test merge_by_range
assign keys to failures to avoid repeating failures many time in the json.
Html side of assigning keys to failures, also pull url generation logic out of templates.
Add a console log when repository lookups fail.
Add a FIXME for another test style which GTestLogParser fails to parse.
rewrite merge_regression_ranges to not return empty
for first_failing when last_passing is empty.

Also test flatten_to_commit_list and write a more
sophisticated range_key function for a nicer grouping heuristic.
A ton of small cleanups to grouped by reason display
also make grouped by reason top of the page since
that is what I should be focusing on improving.