Implemented observer model between Level and Unit

Square calling makeTurnAction() on each Unit was bugged because moving
Units would be called again if they moved in the direction as that which
the Squares were being iterated.

Level now extends Observable, and Unit implements Observer. The update
method has replaced the makeTurnAction method. The add and remove
functions of square now call addObserver and deleteObserver
repectectively.

The TurnBasedUnit interface has been deprecated as a result and field
now has access to its Level (so that its aggregates, or more
specifically, Square, can call the Observerable methods on the level).