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
chore: various cleanups and tweaks

 - bravely ran away. :trollface:
 - interfaces in watch list.
 - multi-layered wilderness map.
 - spec for combat map entity.
 - some git ignore filters.
fix(CombatEncounterComponent): fix issue with map combat detection

- in the case of moving from a map with combat to one without, the this.host.map.properties check was causing the enabled boolean to not be reset to false.
refactor: specify component types for features in tmx files

- This removes a large switch statement for creating the right component based on the feature type.   The feature type is now simply the fully qualified namespace name of the type to instantiate, e.g. pow2.ShipFeatureComponent.
- Update references to the existing feature types in all maps.
- Remove duplicated type property from features in all maps.  Specify type as the object type attribute, not in the properties object.
- Move mandatory attribute checking logic for Treasure/Combat feature components out of the tile map and into their connectComponent methods.  If either are missing an id, they will error to the log and fail to connect to the host object.
- DRY up an array of collideTypes for the player on the map.  TODO: this should be bitmasks at some point.