fix(touch): leak in dismiss click handler for alert service

- Would result in degraded performance over the course of many battles on mobile devices.
game: start with default combatZone of world-plains for now

- TODO: properly detect combatZone for encounter features on the map.
chore: add save menu for save/new game commands
refactor(inventoryView): use track by $index to avoid duplicate errors with object hash
game(stores): distribute existing lvl2/lvl3 loot between castle and keep
chore: remove dup save button
refactor(gameTileMap): add getCombatZones helper

Use for determining which combatZones exist at a given point on a map.
chore: add combatZone properties and zones to maps
refactor(combatEncounterComponent): use tileMap.getCombatZones
refactor: make combat choose enemies and background from combat zones
feat(combat): define combat encounter groups in spreadsheet
feat(treasure): basic chest feature component that awards gold

 - TODO: persist that it's already empty
 - TODO: award items instead of gold if specified by id
chore: add treasure chest in town with 20 monies in it
feat(karma): set up testing config and skeleton
style: move powAlert to vertical center
fix: null ref error in tileMap unload when scene is dead
refactor: move save/load logic to game service
refactor: load inventory based on id rather than text name
feat(treasure): support finding items in treasure features
chore: fix build