Clean chat event handling a bit

Denizen currently handles ASync / Sync chat events really weird... this
is the first step in cleaning it up to be handled appropriately --
moving the world events to Smart events, and making the ugly async code
non-default in the config file.
(Currently our Async code just forces sync, which is fairly pointless
and dangerous)
Add entity health mechanisms

dEntity.health, dEntity.max_health mechs for easy health adjustment
(health/heal commands work too though...)
Also fix some meta typos
Make entity.eid/uuid available even for unspawned, fixes #737

These tags are still valid, even if the entity has not yet been spawned
/ is already dead.
add chunk.cuboid

A quick tag to get a cuboid from a chunk
also fix up cuboid's identify - I'm not sure what was wrong with the
original, but it's output was nonsense (probably weird char handling or
something... either way, excessive .append works!)
Bug fixes and code cleaning

- Random cleaning
- Don't clear the wrong event for sync player chat
Merge pull request #738 from mcmonkey4eva/master

Pull request for entities and such
Merge pull request #736 from Morphan1/master

Additions and Fixes
Allow ~holding in IF blocks

This is allowed by technically also allowing '- ^~command' or something
like that... even if something is semi-instant, hold is now able to
override that and force the queue to wait regardless. (Real instants
like run instantly, foreach, etc, should still remain instant)
- also, allow taking books with no title meta
Move vehicle collision to smart events

There were reports that the block collision event was wasting tick
power... moving them to a smart event should fix that without
disruption.
Fix a few potential memory leaks

Some events weren't being unregistered, midi wasn't entirely removing
data... fixed to help preserve memory on servers that are left running
for very long periods.
Add 'foreach/repeat stop' command

You can now force a foreach / repeat loop to stop mid-execution!
Not sure if this is the best implementation, but it works (and fairly
efficiently too)
Add loop_index def to foreach

Actually added in the last commit, but documented now
also preserve entity mechs in the drop command
Add npc.skin tag

Fullwall added a way to modify an NPC's skin without changing the
nameplate... here's a tag to check the skin name!
Add server.java_version tag

Also stick it in debug recordings
Also some meta adjustment
Allow execute as_server for custom commands

The execute command will now allow custom Denizen-y commands to fire,
even as_server (matching the commit that does this for as_player and
as_op a while ago)
Add player uses portal event

A proper event for players traveling through a portal
Fires only once per activation, safe to not bother with a full smart
event for now. Existing entity portal events do fire rapidly though so
they should probably be smart events... that's to be done later
A few minor fixes

- some meta for the determine command
- xp context for the block break event
- catch plugin-induced errors in use portal event
- ensure it's impossible to ~hold in instant blocks (like foreach)
Clean the invisible trait a bit

- defaults ON instead of OFF (thus, /trait invisible will now actually
toggles it)
- disable when the trait is removed
- slightly improved debug recording
- handle entity lists better in the midi util
Add firework properties

- Both item and entity properties for firework fun (not entirely
complete)
- also fix some weird meta
- also fix some weird code formatting
Add tag definition[x].exists

So we don't have to throw an error if we're unsure if the definition tag
is valid. Great way to testing if a task/proc has valid
definition/context before actually running