Refactored Target Object to remove redundant code

A Target is essentially an Obstacle with special behavior so the
TargetPumpkin class was deleted and the Obstacle class is used instead.
For the special behavior, a type attribute was added to the Obstacle
object to know whether it's a regular obstacle or one with special
behavior.