Наследование интерфейсов С++?
Так у вас же ромбовидное наследование. 
TcpSocket::ITcpSocket::start определено, а IServer::ITcpSocket::start — нет.
Вот и проблемы. Можно их решить, наследуясь от интерфейсов виртуально.
В go() передается указатель на IServer, а в iServer нет метода start.