Initial tank controller commit
Changed Entity.destroy() to Entity.dispose()

This is more consistent with the Java naming conventions. Dispose
signifies that the Entity is being removed from the game, rather than
that it is dead (which may or may not result it in being removed from
the game).
- Additionally, implemented additional KeyboardTankController
functionality
Updates related to the Entity.update functionality

- Entity.update is now abstract
- Entity.update now takes a reference to the world (needed by
controllers)
- addController public method and updateControllers protected method
added to Entity
Added Sprites.removeSprite method

- Sprites now check if isEntityDisposed(), and if it is, they remove
themselves from the game
Added GameMath class
Fixed a number of unit test compile errors
Removed GamepadTankController - no time tonight

- Also removed a TODO from GameWorld
Added addtl Tank methods needed by TankControllers
More Tank.fireCannon implementation
Cannon fired sfx plays when bullets are created
Added isLocal/setLocal to tank
Tank's appearance changes based on local or network
KeyboardTankController added to tank on creation

By default. This behavior can be changed at run-time, which is needed by
the network system.
Removed methods from Controllers

These are no longer used now that Entities own their controllers again.
Added additional Entity tests
Tank now moves, but only along the y axis...
Added unit test for KeyboardTankController
Graphics.draw now properly clears the screen
Updated TankController integration test
Fixes to TankCameraController