Add scoreboard for a hole.

A lot of logic is in this one.  The partitionByUser bit is there because
we are going to want to use it in the future for when a user is trying
to view all of their submissions for a hole easily (there are other
ways, but it would allow some sharing of code).  Only a user's best
score for the hole is counted and the scores are generated with the best
score getting a 1000 score, in the same way as most codegolf websites.