[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
[Bleeding] Add 1.7 setworldspawn and setidletimeout commands. Addresses BUKKIT-4932
Modify give command to support 1.7 features. Fixes BUKKIT-5286

Necessary additions include an interface to add internal value conversions
that are inappropriate for proper API design. This acts as a substitute
for properly formed, user-friendly commands in an effort to maintain
relatively vanilla behavior.
POM Changes
Measure Timings Duration
Timings Paste Command
Enchanced Timings
Add PlayerItemDamageEvent
BungeeCord Support
Add Arrow API
Add Particle API
Define EntitySpawnEvent and SpawnerSpawnEvent

Defines EntitySpawnEvent and SpawnerSpawnEvent. Adds BUKKIT-267 and BUKKIT-1559
Entity Mount and Dismount Events
Update Depends

- All of these changes have been reviewed to be binary compatible and in general contract compatible with previous versions of the libraries.
InventoryClickEvent getClickedInventory

Add InventoryClickEvent.getClickedInventory. Adds BUKKIT-4495
Plugins currently have to do the logic themselves on the raw slot ID
in order to determine the inventory clicked. This provides the logic for plugins to
readily identify which inventory was clicked.
Added getAllSessionData() to the Conversation API.