refactor

Move out game loop into its own method in the new 'game' module.

Also, move GameConfig and Player classes into the GameState class.
random: add default seeding mechanism

This clones the behavior of the `initialize` method from Haskell's
mwc-random library.
random: add 'rnd_sample' method
random: roll: add comment
game: improve readability
game: refactor using Ruby's Module system
game_loop: handle empty command edge case

sister commit 0657ccddb30911b84b02a82e2685d365832a3270 upstream.
game_loop: refactor