Added collision detection for obstacles in the update() method.

To simulate a laser hitting an obstacle and being stopped by it,
a condition to check if the laser's live reference point is inside
one of the fixture definitions was placed so that its direction
vector may be set to 0 to stop it from moving.

Other changes include changing the loop breaks to return statements
in the update() method so that it does not evaluate other collision
tests once it has already passed one of them since passing one test
means it's impossible to pass any other test.

Conditions to check if the game mode is currently set to PLAYED
when the player tries to move or rotate the mirror to stop mirrors
from moving or rotating when the laser is moving.
Added condition to check if laser is out of bounds

If the laser has moved out of the playable screen, it will be halted
Added count for keeping track of targets hit.

In order to know how many targets the player has hit during the
level, a count was added.

A method is also called when the laser has either hit all 3 targets
or has collided with an obstacle to stop the game in preparation
to show a level summary screen.