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.
Okay, wonder how our play_invariant works in the game contract then because that one is where I copied from.