Implement _fileno() for Stream and UDP

This method returns the libuv file descriptor for a Stream or a UDP handle.  It should be considered an internal API and can break things horribly if abused. The file descriptor that is returned will still be
"owned" by the libuv Handle, and libuv assumes it has full and unique ownership of the descriptor and that nobody will change it.

This method is Unix only. On Windows this returns -1.

The method is useful e.g. call non-invasive getsockopt() calls such as SO_PEERCRED on Pipes.

See also https://github.com/saghul/pyuv/issues/157 for an idea how a cleaner API might be added to libuv in the future.