Refactoring. Decouples the environment with the robot

Adds base Robot abstract class.