always pass handshakeInitializationPacket to ChangeUser

If the queue is empty before calling a ChangeUser sequence, the sequence will be started without being passed the handshake packet. This makes sure it gets passed.

Additionally, validateEnqueue now has a test that handeshake() was called before changeUser().

fixes #374