[RFC] impl mch_open with libuv

ref #133

update: leaving `mch_fopen` and `fdopen` (pointed out by @aktau below) for another PR.
We usually put the pointer asterisk near the variable instead of the type: `const char *path`. One good reason for this is because that's how C typing works:

```c
const char* p, u; // not what you think
const char *p, *u; // what you think
```