Redo particle effects API and add new effects

I've redone the particle effects API.

Patches originally used to add the particle stuff have been repurposed to add some missing effects. I've intentionally done this so early in the patch process because I've submitted a PR to Bukkit with the same diff (see https://github.com/Bukkit/Bukkit/pull/1074), so if it gets pulled this century updating would be a matter of removing them both.

Patches whose purpose is to add the actual particle stuff have been added last. I've attempted to keep the diffs at a minimum, so they may look ugly or something, but work well otherwise and with very little overhead.