design: change default magic caster to female magician

- necromancer is a weird default.
feat(StateMachine): unwind the callstack before changing states

- use underscore defer to apply new states to the machine after the callstack unwinds.
feat(CombatView): target selection from menu items

- enumerate enemies when targeting
- remove some _.defer hacks in combatView/combatEndTurnState to work around old state machine set state callstack problems.
chore: tighten up pending state logging
chore: remove unneeded setCurrentState override
feat(PlayerComponent): add collideWithMap method

- checks collision against the tilemap layers by checking for a passable attribute on a tile's metadata being set to false.
feat: allow entity creation from template files

- basic entity/component validation and creation.
- supports input argument type validation and checking.
- supports constructor arguments to components via input values.
- verify functionality with tests for basic functionality with test templates.
chore: register powEntities type with resource loader
refactor(Combat): use entity template for combat characters

- define two entities, CombatPlayer and CombatEnemy that each include a set of components that control their actions in combat.
- group entities in web/entities/combat.powEntities container.
- tighten up some components and references to dependencies that fell out of abstracted entity composition.
test(GameEntityObject): basic programatic entity composition
chore: add defensive error for deleting objects during tick

- TODO: could add an automatic object cleanup outside of tick and have .destroy() simply set a removal flag.
- For now just error loudly about the requirement and suggest using _.defer()
fix(ShipFeatureComponent): issue where ship could not be boarded

- has to do with multiple layers and collision.
- remove MovableComponent.moveFilter and use manual interval on ShipFeatureComponent to detect when to disembark.
refactor(GameService): create world map player from entity template

- add map.powEntities container, and a template MapPlayer.  Use this template to create the map player in gameService.ts.
- refactor EntityContainer to use an array of components, rather than an object to detect conflicting names.
 - while using an object conflicting keys could not easily be detected because they would just be overwritten when the JSON parser turned the input into an object.
 - using arrays we can load the duplicates and detect them, then provide an error to the user.  it was super frustrating to debug an issue where a template had conflicting keys.
- remove scene member from SceneComponent, and force components to access the scene through their host object.   This avoids having to keep the scene member in sync across components.
- update components that referenced scene member and make resilient to its potential absence on the host.
feat(EntityContainer): support user specified object constructor args

- clean up naming, call input parameter lists to objects/components "params" to avoid confusion with object level "inputs".
- If a template object specifies "params" on itself, then the named params will be plucked from "inputs" and applied to the constructor of the object.
- If a template does not specify params, the template "inputs" will be passed directly to the constructor.
- Update test suite to verify object constructor args work as expected.
test: scene object basic
chore: clean up combat enemy template instantiation

- call super.onAddToScene() when implementing a subclass
chore: clean up tests
chore: clean up entity tests
refactor: create game map as an entity

- remove some stored references on components to their host properties.   Access the host object to get at them, because when they're stored on the component it's hard to change them on the host without getting old references.
- remove some dead code and cleanup some cruft in various components.
- make the CombatEncounterComponent more resilient and less reliant on configuration at connect time.  Update component state with syncComponent() calls.
- make SceneWorld by default assign the shared pow2.ResourceLoader.get() instance to it's loader.
- add static instance accessor get() to GameWorld.
chore: add optional onAddToScene to ISceneObject