Remove duplication between fixture applications.

This will make generalising the runner to cover multiple different
socket types easier down the line.
Separate out any TCP-specific functional test code.
Generate socket type specific tests from suite.
Have DummySocket behave more like a real socket.
Prevent asyncore from throttling self.addr on us.
Reorganize the functional test hierarchy.

TcpMixin should really be TcpTests and should derive from
SubprocessTests as it requires access to the sock attribute.