Implement the IOpenFileDescriptor interface correctly.

On windows 64bit sockets can have 8byte long handles.
Remove the IntPtr overloads for TTY in the constructor.

TTY can only take an int on windows and linux.
The additional overloads make the code unreadable. A simple IntPtr
conversion shouldn't be too hard on the user.
uv_guess_handle can only guess on integers.
null check in UVFile::Sync
Add ArraySegments Write overloads to UVFile.
Rewrite UVFile to use int instead of IntPtr.
Hide OnChange in FileSystemWatcher.

The user shouldn't be able to override it.
Remove sendfile functionality.

It is not yet supported by libuv:

01:45 < bentkus> How am I supposed to use sendfile if I create a socket with uv_tcp_init
01:45 <@piscisaureus_> you are not
01:45 <@piscisaureus_> supposed to used
01:45 <@piscisaureus_> *use it
01:46 <@piscisaureus_> bentkus: it's the appendix of libuv
Rename IncommingStream and AcceptStream in IListener.

The new names feel better.
AcceptStream is a left over of the old approach with Accept and AcceptStream.
IncommingStream sounds just too verbose, Connection seems like a better fit.
Use the Dispose/Finalizer pattern correctly.

SuppressFinalize must be called in Dispose().
Rename DefaultByteBufferAllocator to CopyingByteBufferAllocator.

This makes the purpose of the class clearer.
Well, it still is the default byte buffer allocator.
Make the ByteBufferAllocator overridable for UVStream and Udp.

This will allow the user to supply his own bytebufferallocator.
It will allow the user to create efficient allocating.