Implement UV::Req.

`UV::Req` is a binding of `uv_req_t`.

It would be returned when subclass of `uv_req_t` is instantiated to create request in libuv.
Only `UV.getaddrinfo` and `UV.queue_work` supports it currently.

It has following methods:
* `type`: returns uv_req_t type symbol mapped with `UV_REQ_TYPE_MAP`
* `cancel`: binding of `uv_cancel`. Not available for windows since libuv doesn't support it.

`UV::Req.new` is undefined since mruby script shouldn't create it directly.