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
Merge pull request #739 from mcmonkey4eva/master

Pull request for fancy symbols that do things