Added some more to upgrade plan
Added state ids to keep track of separate instances
Improved state caching and restoring +++

restoreState now calls setState if newState is not passed
cacheState now caches states based on id numbers instead of constructors,
removing the one-cache-only limitation - this actually simplified the code
a lot.
added isCached method to test if cached; returns state id if cached.
Issue #28: Updated menus - hotkeys, etc

Redid the method of hotkeys; now specified in the state (this was getting
horrendous)
May need work still, as you have to specify the closing button in the menu
- currently automatically uses the key to open the menu.
Cleaned up all of the old code