Merge pull request #143 from BU-CS673/production

Merge pull request #138 from BU-CS673/Ethan
Add ExplosionSprite

Includes Explosion Concrete Class, this may need to be renamed if we
create different explosions for different things--Bullet, Mine & Tank
may be different?
Switch ExplosionSpriteTest to OBJECTS drawlayer

We need a layer higher than TANKS to draw explosions
Merge pull request #162 from BU-CS673/production

Production
Refactoring UI

Refactored UI code to generate Main Menu to avoid using a WYSIWYG
editor.

Added Tank Icon
Preferences Screen & Multi-Player Buttons

In Process
Added KeyStroke Stuff
Creating Preferences MVC

Currently has just SFX/MFX/Screen Size
Added Comments and Disabled Multi-Player Buttons
Disabled Screen Size Control on GUI
Added res\icons area for UI
Resolve a merging PITA by brute force

Committing the current version of these files from Production into Ethan
because I kept getting hung up on Merge Conflict.
Merge branch 'Ethan' into production_test
Preference/UI Refactoring

- Added res/icons/test_sound.png

- AltMenuScreen uses UserInterface for game icon

- ButtonPanel, removed extra stuff and PreferencesModel declaration

- MainPanel, switched to use JLabels instead of convoluted pain(t)
method

- PreferencesController is still in process; TODO: Add handling for
events from PreferencesViewer

- PreferencesModel, simplified Screen Size check and removed
setScreenSize return value, added defaults set from UserInterface, fixed
error in checkArgument for Music Volume

- PreferencesViewer, refactored to make it more readable and hopefully
better design

- Added UserInterface class to hold various user interface things

- Added UITestApplication because I had been previously changing Sprint1
and other which was bad of me because then my edits will wind up in
Production and potentially screw others
- ButtonPanel -- Updated to follow MVC more closely.  Will now create
Model, then View(Model), then Controller(Model, View) and show the View

- PreferencesController -- Too many changes to list, but now correctly
accepts events from Viewer.  Will write to System.out.println whenever
anything is changed (and also updates the Model for Volume/Screen Size
changes)

- PreferencesView -- Too many changes to list, but now correctly builds
itself and events to Controller
PreferencesModel declared at higher-level

Ran into an issue of the Preferences not being session persistent
because I had been declaring in wrong location
Added Preferences Manager

(incomplete!) Loads/Saves PreferencesModel's to disk
Added missing JavaDoc to PreferencesController::getSfxVol()
Preferences Manager Loads Preferences and Populated to Preference Window

- Save Work
- Automatically Loads Preferences when window is opened

TODO: Clean up the code and figure out when we should load the
preferences (before opening Pref window is not the right time, they need
to be loaded early for the game to use)
Merge pull request #203 from BU-CS673/Ethan-Staging

Ethan staging