Prevent logical errors in IF command, fixes #515

- a double compared to not-a-double should not pass (Always fail that)
[for #515 ]
... idea for future: Certain doubles could return true (EG, 1 or higher
passes, below 1 fails?)
- also prevent list arguments like "li@3||2" from becoming "li@3OR2" by
only changing bridges and comparisonoperators when actually needed.
[Related to #519 ]
Prevent accidental tag alternatives

if you flag global 'potato' to 'li@3||x', then use
'<<global.flag[potato]>>', it would show 'x' because '||' looks like an
alternative.
This will prevent that issue and make that tag return 'li@3||x' as it
should.
[For #519 ]
Prevent lists misreading the tag-alt escaping

From the previous commit, <<global.flag[potato]>.get[3]> wouldn't work
because dList didn't know about the escape symbol. This corrects that.

... I'd like to take a moment to thank the creators of ASCII for
providing all these useful control symbols.
Improve debugging (Exceptions...)

- 'Filled tag x with y' will now watch out for tag escape symbols and
display them correctly.
- add dB.log(DebugElement) to replicate the echoDebug's similar
functionality
- change all 'exception.printStackTraces' to call a dB function that
manages it correctly and singularly.
Record exceptions

Exceptions will now be included in 'denizen debug -r' logs.
Add <entity.velocity> and <location.vector_length>

- <entity.velocity> for the movement velocity of entities. Not so great
with players.
- <location.vector_length> for more location/vector mathematics.
Fix 'matches integer' comparable

Integers and doubles are different: Keep them separate (Until
mathematical comparison)!
Before this fix, 'if 3 matches integer' would fail because it reads '3'
as '3.0'
Minimize element.substring errors + fix math

This will prevent stacktraces / failure to run if substrings are used
with really *really* wrong input indexes. (There are situations where it
can happen out of the scripters control, can't blame them)
It also corrects the counting of the end index (the character at
endIndex is not included in Java)... it should be in dScript. This way
substring[1,1] returns one letter rather than nothing at all. This is
generally what people logically expect to occur, though there may be
trouble with 'endIndex - startIndex' not being equal to the returned
length... anyone who gets that far in a calculation can figure out to
add 1.
Add to the command registry

Just some more information for the commandRegistry, we really need to
get more documentation set up!
Merge pull request #533 from mcmonkey4eva/master

New pull request: Fixing things!