Moves logic around between go!() and move_piece() to make everything more consistant.