Collision detection

This was a larger chunk of functionality than our previous steps. Since we want the Simulator to be responsible for throwing exceptions, we need to do a lot of "asking" rovers things, not "telling". 

I'm ok with this, overall.

rovers needed an instruction list, so I could ask them for it. I thought that was cleaner than introducing some other new concept like a RoverController, or InstructionSet.

This could use some refactoring, I see at least two extract method opportunities, maybe three.

Why don't you comment in this PR, and we can discuss refactoring. Or hit me up on ScreenHero.

Peace!