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.