refactored makeMove to accept a string, try to read it as a position, and do error checking there; added BadInput type to accomodate this, and simplified logic in loop