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.