In an effort to give names to core concepts in the library, replace the
current way of passing around tuples (of varying length and content)
with appropriately named structs.
As a consequence of creating `Player.{V1, V2}` and `Result`, a variety
of functions that extracted values out of the tuples have either been
removed or changed to access struct fields instead.
Change the cases where a `do:` is followed by a `mix format` mandated
line break, or if the expression following the `do:` would span multiple
lines anyway.
The only exception to the rule above is the first change in the
changeset, as this was done for the function style of `initial_rating`
to be consistent with `initial_rating_deviation`.