Cleanup the asychronous code in the TCP implementation
After the loopmgr work has been merged, we can now cleanup the individual protocols a little bit, because there are stronger guarantees that the sockets will be kept on the respective loops/threads. We only need one for listening sockets (start, stop) and reading from the TCP (because the isc_nm_read() might be called from read callback again.
Cleanup most of the asynchronous events in the TCP code, and add comments for the events that needs to be kept asynchronous.