Refactored from last Wednesday's version to use Enum, thus allowing us
to get rid of validation checks for the piece strings, cleaned up win
checks, got ride of duplicate code, etc.