collision detection as a transaction

Moving in atomic steps will not allow the rover to drive over an
obstacle. Using a vector, however, will allow the rover to move if it
does not end up on an obstacle.