Codechange: Move Pack() and GetInstruction() to separate static class
Cleanup: Move handshake handling to separate class
Codechange: Move HandshakeHandler to NetworkIO namespace
Feature: Introduce factory and regular interfaces for HandshakeHandler