Refactor Grid#has_wall_at?, Grid#button_at and Wall#at? to take a position rather than a row and column pair
Add Grid#out_of_bounds?
Make various improvements to the Robot class

  - Make it observable
  - Change the default step size of #move_straight to 2
  - Add a new method #try_to_move_straight
Change the way robots are initialized and add a #row and a #col reader for convenience
Make Robot#move_straight return the previous position of the robot
Add a robot controller to be used to manipulate the movement of a given robot on a given grid