Added leaderboard update contract

@isupeene  Introduced notion of a Stats class for the leaderboard to contain. Just a class that contains different integer counts for wins/losses/ties. Could add a contract for it with postconditons that it returns integers but I don't think this is necessary. Allows leaderboards to be displayed differently on clients if necessary. Could still default rank them some way in leaderboard function.
Invariant doesn't take `result `.