Massive refactor to how compare() works. Instead of one massive function, it split it out into methods on a comparer struct.
Massive refactor to how compare() works. Instead of one massive function, it split it out into methods on a comparer struct.

This a) makes the logic way easier to follow, and b) should make it easier to change the behavior in `-upddate-golden` case.

Part of #755. Part of #701.

jkomoros/boardgame,jkomoros/boardgame,jkomoros/boardgame