Replace magic numbers with errno.X

This fixes the code so that running under OS X it raises
ConnectionClosed as appropriate for when the connection is reset by
peer.
multiprocessing.Queue() is holding onto resources ...

And it means we run out of file descriptors to use on OS X when running
tests...
Upon a socket.error, we need to close the filehandle

If we don't close the filehandle, socket.close() won't actually close
the underlying file descriptor because the fp still holds a reference to
it. Even when it then goes out of scope, the file pointer is still open.
close() can now exist everywhere

There is no requirement to special case _close() because of the fixes in
task.py whereby we do the right thing when it comes to the ROFB.
Fix tests
no need to alias close to _close now that ReadOnlyFileBasedBuffer actually has a close method that works both when called from inside waitress and from within wsgi code