[BREAKING] Shift plugin initialization; Addresses BUKKIT-1788

This reverts commit ae4f1c05d825e232d7fc0483639ba65ad54d2db4, restoring
commit 27cb5e7c9c6b2cfc5419262df75d89bc6bfe7879 (mostly).

Shared class loading was removed as an explicit feature in the plugin.yml,
as all plugins implicitly share class loaders already.

Some deprecated, internal functionality is now (package) private, namely
some sections pointed out in 203de4180b40f069d2c175d763476bd4ce338c76.
Add method to get plugin by its class. Adds BUKKIT-5240

Currently, the only way to get a plugin is by name or using a static
variable. This adds two methods to get a plugin based on its classes,
utilizing the plugin classloader.
Add unit tests for org.bukkit.util.StringUtil
Use region matching instead of sub-strings. Addresses BUKKIT-5275
Fix some messages

Addresses BUKKIT-5272, BUKKIT-5282, and BUKKIT-5283
Spigot
Empirecraft-API POM Changes
Water flow not trigger chunk loads

Make BlockFromToEvent default cancel if the flow would trigger a chunk load.
PlayerDeathEvent.getItemsToKeep

Exposes a mutable array on items a player should keep on death
Add a call helper to Event
Precise timings
EntityShootBowEvent consumeArrow API
ItemStack isSimiliar ability to skip durability check
Expose commandmap
Inventory Meta API
Entity Serialization

add method to spawn an entity at a location if its not in any world (invalid)
Remove Invalidated Metadata

On reload, metadata will be cleared
Add force to spawn reasons
Add API for vehicle exit event reason
Reset more stuff on timings reset