Robot ignores movement to the west boundary of the grid

If user instructs the robot to move to the west
boundary. It will ignore it.

- Added grid boundaries feature spec
- Added simulator unit spec for out of boundaries movement
- Added 'an out of boundaries movement' share example
- Moved 'a robot movement' share example to spec helper
Robot ignores movement to the north boundary of the grid

- Added simulator unit spec for north boundary movement
- Refactor the west boundary simulator unit spec
Robot ignores move instruction to the east and south boundary of the grid

Now the robot will ignore MOVE instruction when it
hit the boundary.

- Added east and south boundary unit spec
- fix grid boundary feature spec. Mistake in calculation.
Refactor simulator class

- Abstracted out the Grid boundary config to have a 
  only source of truth. 

- Refactored the move method to revert to original
  robot position if robot is out of boundaries.
- Added note to increase readability.
Fix Toy simulator script

Use require relative to load all the require file
Added Test data and updates the README

- Added test data for toy robot simulator
- Added description for LEFT and
  Right instruction in README
- Changed the script example to use test_data.txt
Added unit spec for CLI class

The purpose of this test is making sure the
CLI class reads from instruction file line by line
then calls the corresponding Simulator method. 

- Added 'an instruction' shared examples to check
if the Simulator class received the correct method
call
Simulator ignores REPORT when PLACE is not executed

Added unit test to simulator to ignore REPORT instruction
if simulator did not run PLACE instruction before