This pull request exposes `uv_stat_t`, but this should be private in the future. I did expose this to make the conversation to libuv easier and to split the refactorings to later pull requests. I don't think we should expose libuv outside of `/src/os/`.
Libuv doesn't return error codes directly, but instead you have to call `uv_last_error(loop)` (see: http://nikhilm.github.io/uvbook/basics.html#error-handling). I think we should implement error handling, but I don't think we should use libuv error codes directly, because we should be able to handle errors in a consistent way, even if they are not from libuv.