[RFC] impl mch_open with libuv

ref #133

update: leaving `mch_fopen` and `fdopen` (pointed out by @aktau below) for another PR.
Actually I did find one case where they differ: if `strdup` fails OOM, it returns `-ENOMEM` but `result` is 0. Other than that they are always the same.