Major infrastructure changes, check description.

- Switched Match from an Interface to Abstract, which lets you set some
default code for the different Match types to run, or just run in Match,
so all that JuggernautMatch and future match types have in them is code
for that match type.
- Added in both an EntityDamageByEntity and EntityDamageByBlock
Listener, so we can tell whether the person died by nature or someone
killing them, and have separate methods for each.
- Lots more, I just can't remember it all.