Don't let Bungee run in dirs with ! in name.

Java uses ! to indicate a resource inside of a jar/zip/other container. Running Bungee from within a directory that has a ! will cause this to muck up.
Correct a typo in Spawn Object rewriting
Fix uniqueId returning null in LoginEvent
Handle objective value changes. Although the client *shouldn't* be using this for any sort of keying, it may indeed be. Closes #1116 awaiting testing.
Clarify PreLoginEvent
Make ComponentBuilder clonable
Duplicate any extra components when duplicated
Tidy up the handling of Spawn Object and fix a off by one error with it
Allow customisation of kicking during initial server connection. In particular allow removal of server name by modification of messages.properties.
Disable plugins in reverse order
Add ServerInfo method to send plugin message only if server is online
Add forward parameter to only forward to online servers [Adds #1120]
Change a few aspects from last PR
Add KickPlayer subchannel

Can be used to kick a player who is on a different server
Track plugin classloader to use plugin thread group where possible

This commit allows creation of threads in most plugin use cases where it
was previously restricted because of the new security manager. To
accomplish this, the security manager resolves the ClassLoader that is
attempting to create the thread and links it to its plugin to finally
return that plugin's thread group. Specifically, this resolves issues
when trying to create threads and ThreadFactories in places other than
BungeeScheduler.runAsync such as Plugin.onEnable.
Add LoginCancelEvent to catch disconnects during login