Adds a Player class and Exception handling

HumanPlayer extends Player. Chess game loop prompts players for input,
and checks for legal moves.
Adds legality checks to moves

Does not include diagonal moves or moving into check.

Adds Coordinates to board printout. Moving pieces no longer adds
empty strings to hash.
Adds functioning collision detections

Uses two separate algorithms for horiz/vertical and diagonal movement.
Also fixes pieces losing track of their positions.