[NaCl SDK] Support non blocking TCP/UDP for NaCl IO library in NaCl SDK.

Does not affect chrome itself.

This change bring in support for non-blocking TCP and UDP send and recv.  This requires rework of EventEmitter, EventListner splitting them out of the MountNode so that the MountNode (socket) could be de-ref'd and closed, while the Emitter (fifo) was still available to accept IO cancellations.

Part of the split out, also simplified EventListener use.  Now listeners are per thread and RefCount emitters (not Nodes) significantly simplifying lifetime issues and reducing emitter/listener code complexity.

In addition, the simplified locking allows for one-to-one Listeners to share locks with the emitter, for cases like  read from UDP, where multiple threads could legally block on RecvFrom, and must only make progress one at a time to ensure correct timeout.

Adds 'pipe', 'packet' and 'signal' Emitters to support pipes, udp sockets, and IO interruption (EINTR) via 'kill'.

* split out EventEmitter and EventListener from MountNode
* Remove ScopedRef from EventListener
* Remove EventInfo
* Create EventEmitterPipe (Emitter + FIFOChar)
* Create EventEmitterTCP (Emitter + FIFOChar * 2)
* Create EventEmitterUDP (Emitter + FIFOPacket * 2)
* Create MountNodeStream base class
* Create MountNodeSocket from MountNodeStream
* Create MountNodePipe
* Rename MountSocket to MountStream
* Add plumbing for pipe
* select uses poll functionality
* move all send/recv on sockets to MountStream thread.

BUG=257723
R=binji@chromium.org

Review URL: https://codereview.chromium.org/23498015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224603 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 224603