Added Colored Obstacle Gates that accepts lasers of a certain color

An Obstacle that accepts only lasers with the same color has been added.
It checks if the latest LaserSegment object in the ArrayList has the same
color as the obstacle. If they have the same color, nothing happens so the
laser can simply pass through the obstacle. If they dont have the same color,
the obstacle blocks the laser as if it has hit a regular obstacle and the
game is stopped.
Refactored GameWorld object by reducing big methods into smaller ones.

The methods in the GameWorld object that had really long method bodies were
refactored by utilizing more private methods to compose the big method, making
it cleaner and more organized.