User Input

Implemented user input. To do that, I had to implement a few helper
functions that checked for validity of moves as well as get a basic
version of the game loop up and running. Right now the game loop is
infinite and only the player can input moves. Wrote tests to confirm
that everything is working.