[RFC] impl mch_open with libuv

ref #133

update: leaving `mch_fopen` and `fdopen` (pointed out by @aktau below) for another PR.
This was the only case I found where calls to mch_open were checking specifically for -1. libuv seems to return `-<error code>` instead, which doesn't match the contract for `open()`. But I see no reason for us to enforce that contract in our `os/` abstraction layer.