Make ProxyPingEvent async
Add player list header / footer API.
Add Title API.
Initial draft of forge/FML support. Some race conditions prevent this from working sometimes. Something with the time we send the handshakes
Forge 1.7 support. See issue #899.

Conflicts:
	protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java
	protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionRequest.java
	protocol/src/main/java/net/md_5/bungee/protocol/packet/EncryptionResponse.java
	protocol/src/main/java/net/md_5/bungee/protocol/packet/PluginMessage.java
	proxy/src/main/java/net/md_5/bungee/ServerConnector.java
	proxy/src/main/java/net/md_5/bungee/UserConnection.java
	proxy/src/main/java/net/md_5/bungee/conf/Configuration.java

Conflicts:
	proxy/src/main/java/net/md_5/bungee/ServerConnector.java
Move registering the Forge FML/FML|HS channels to the Bungee methods, in an attempt to try to fix other channels not working.
Comments to clarify what the two state classes handle.
Fix situation where Forge clients couldn't log onto Spigot servers.

Conflicts:
	proxy/src/main/java/net/md_5/bungee/ServerConnector.java
Commented out a line so switching between Spigot servers works - to be uncommented once re-sending a handshake is working.
Quick fix to some blocks sometimes not rendering on the Forge client when connecting Spigot.

Please note that you now need to mark a server as modded using the "modded: true" option in your config.yml
Insert a delegate-like packet sender into the client, that slows the Forge server handshake so the client can complete modded negotiation first.
Fix on initial connection when connecting to a vanilla server. Should fix some of the low latency (!) problems that users have seen. Part of issue #899.

We now do the client handshake before we start our server connection in this case. We allow it to finish through the use of an IVoidAction interface that acts as a delegate, passing back control to the main connection routines when the handshake is done.

When we come around to server switching (once FML has the ability to switch states), we need to consider that a server might reject the client after the handshake is complete. We might need to do a second handshake much later in this case, otherwise the user might end up with an incorrect state for the server they are currently connected to.
Fixing broken code that prevents clients from logging into modded servers.
Logging upstream/client side FML handshake, and reworked the client state class to fall into line with the FML server sequence manager.
Refactored Forge support to fix syncing issues.

* ForgeClientHandshakeState and ForgeServerHandshakeState now represent
FML's exact flow so we can manage everything better.

* Instead of calling startHandshake explicitly, we simply allow FML to
start the handshake for us after receiving the LoginSuccess packet as
shown here :

https://github.com/MinecraftForge/FML/blob/master/patches/minecraft/net/minecraft/client/network/NetHandlerLoginClient.java.patch#L26

This solves the syncing issues since we are not attempting to change the
normal flow.

* Changed resetHandshake method to call a new FML packet HandshakeReset.
After FML completes its handshake on clientside, it ends up in the DONE state.
Previously it would do nothing and prevent Bungee from reinitializing its ID's. Pending a PR, FML will listen for this HandshakeReset packet and revert back to the START state as well as revert its GameData to the main menu state.
This fixes the ID syncing issue we had previously when switching servers.

* Removed need for syncing vanilla block ID's to FML when a forge client
connects to vanilla server. FML handles this by aborting the handshake
process and skipping to the DONE state when detecting a vanilla server as
shown here :

https://github.com/MinecraftForge/FML/blob/master/src/main/java/cpw/mods/fml/common/network/handshake/FMLHandshakeClientState.java#L44

* Removed isModded flag. Detection of a forge server is now handled after
receiving the first FML packet from server.

* Fixed pom.xml for eclipse users.

Note: This commit still REQUIRES FML client changes which have not been
sent to FML. I will be sending the required PR to get support in for
BungeeCord within the next day or so.

Conflicts:
	proxy/src/main/java/net/md_5/bungee/ServerConnector.java
Remove the "enable_forge_support" flag, as the server is no longer sending FML|HS packets actively.

Conflicts:
	proxy/src/main/java/net/md_5/bungee/conf/Configuration.java
Fixed handshake issues when switching servers.
Fixed communication between ForgeServer and ForgeClientData.

* All packets sent within a state are now queued and sent synchronized after state transitions.
* Added support for Forge's channel registration.
* Added ForgeUtils which currently reads REGISTER packet for channels.
* Added better detection for Forge servers.
* Fixed logging.
Added support for FML's extended packets.
Remove unneeded VanillaClientData class.