Correctly end the TCP connection

The previous method of simulating an incoming end and then doing an
outgoing end in the 'end' event handler, besides being convoluted and
unnecessary, causes the 'disconnect' event to be emitted twice: once for
fake 'end' event, and once when the server actually ends the connection.
That this would occur was obvious on examination of the code, but was
first noticed when logging the disconnect callback during disconnect
from a real STOMP server.

Note that the mock tcp stream used in the test did not correctly emulate
what happens when a TCP stream is shutdown (that an outgoing .end()
causes an incoming 'end' event).
Allow message headers to be specified on publish FIXME TESTS

This allows the content-type header to be specified, a SHOULD
in STOMP 1.1
Return this so stomp methods can be chained