Updated array tests to use "Array.isArray()" in place of the less reliable ".length" check.
Put entity message loop checking inside debug clause so purposeful recursion doesn't incorrectly trigger as an endless loop.
Substantial Update - Revisited component event handling and made some structural changes:
 - component-level "addListener", "addListeners", "removeListener", and "removeListeners" methods have been deprecated in favor of "addEventListener", "removeEventListener", and "removeEventListeners" with syntax similar to equivalently named DOM JavaScript methods.
 - There is no longer a component-level conflict between events and methods having identical names. In the same vein, this['event-name']() can no longer be used to run an event's associated handler: events must be triggered at the entity level.
 - All standard components have been updated to use the component factory.
Added "messenger" class and implemented child event triggers on `entity-container` as event listeners instead of looping through all children.
`entity-container` messaging bug fixes.
Documentation updates for `messenger` implementation.

If you upgrade a game designed using an older version of the engine, you must include {"id":"Messenger", "src":"../engine/messenger.js"} in config.js above the entity inclusion.
Enabled adding variant HTML templates per build in config.json.
Local methods bugfix for `entity-linker`.
Merge branch 'master' into node-based-movement

Conflicts:
	engine/components/node-map.js
	engine/components/node-resident.js
Updated `node-resident` to use non-functional message handling.
Fixing `node-map` to use new messaging system.
`node-resident` neighbor messages set to use addEventListener
Fixed `node-resident` removeListener call.