add support for messages of arbitrary length
add test for message with large payload
add Close() method to TCPServer
use a channel instead of time.Sleep()