Added the ability to change the ruleset of the game on the fly.
Rulesets have been extracted into their own class, with built-in constructors for the more commonly used rulesets.  Added controls to switch between these rulesets, or to a custom input ruleset.