Added winner() and drawGame(); changed getUserMove()

getUserMove() now returns an updated board, instead of forcing the caller to update the board based on the int passed back by it. getUserMove() also now has a special exception that it can throw internally, so that real exceptions will be caught normally.