This splits score validation and ranking into individual pieces, which is necessary in order to more easily split it off into code that can be used on both the server and client.
It has no functional changes.
In fact, the tests kept running at each commit except f4497c3 (which I thought was more readable to split off).
This should make it easier to follow the moves with each commit.
Note that the refactoring is not complete yet, but it's big enough already.
Another step towards #245.
This splits score validation and ranking into individual pieces, which is necessary in order to more easily split it off into code that can be used on both the server and client.
It has no functional changes. In fact, the tests kept running at each commit except f4497c3 (which I thought was more readable to split off). This should make it easier to follow the moves with each commit.
Note that the refactoring is not complete yet, but it's big enough already.