* Use Boost.Process instead of pid_t
This will let us handle child processes (mostly) uniformly across platforms.
TODO: There is no SIGTERM on Windows; achieving something equivalent is fairly involved.
* Fix Arrow poll() patch
- Negative timeout for poll() was not translated to infinite timeout for select()
- Only use select() on Windows, as other systems limit the range of the file descriptors
* Apply poll() -> select() patch to Redis's ae.c as well
* Get rid of 'index' lines in patches, which are unnecessary and likely wrong anyway (esp. when there are multiple patches)
* Simplify patches to remove unnecessary context and make them more robust
* Update .bazelrc for Windows compatibility
* Block inclusion of (legacy) WinSock.h to avoid errors
* Suppress warnings for Windows code
* Include boost::asio in includes so that it is passed as -isystem to avoid warnings
* Link with -lpthread only on non-Windows
* Undefine BOOST_FALLTHROUGH, which is unnecessary and causes macro redefinition warnings
* Define RAY_STATIC and ARROW_STATIC to compile for Windows
* Add WinSock import library for Arrow
* Add Python and Redis submodules, and remove old third-party modules
* Update VS projects (WARNING: references files that do not exist yet)
* Update code & add shims for APIs except AF_UNIX/{send,recv}msg()
* Minor style changes.
* windows_intermodule_singleton warning
* Fix some warnings from Visual Studio
* More Visual Studio project changes
* Replace zlib Visual Studio project with stub; it's not needed
* Un-enable link-time code generation