uv: Remove lots of uv/C++ wrappers
uv: Provide a helper fn to Result<(), IoError>
uv: Remove closure-based home_for_io for raii

Using an raii wrapper means that there's no need for a '_self' variant and we
can greatly reduce the amount of 'self_'-named variables.
Migrate uv timer bindings away from ~fn()
Migrate uv process bindings away from ~fn()
Migrate uv signal handling away from ~fn()
Remove usage of ~fn() from uv async/idle
Remove usage of ~fn from the scheduler
Fixing rebase conflicts and such

This cleans up the merging of removing ~fn() and removing C++ wrappers to a
compile-able and progress-ready state
Start migrating stream I/O away from ~fn()
Migrate uv file bindings away from ~fn()
Migrate uv getaddrinfo away from ~fn()
Migrate uv net bindings away from ~fn()
Clean up the remaining chunks of uv
Don't overflow in a converting stat times to u64

Closes #10297
Add bindings to uv's utime function

This exposes the ability to change the modification and access times on a file.

Closes #10266
Migrate all streams to synchronous closing
Work around bugs in 32-bit enum FFI

cc #10308
Update all uv tests to pass again
Rework the idle callback to have a safer interface

It turns out that the uv implementation would cause use-after-free if the idle
callback was used after the call to `close`, and additionally nothing would ever
really work that well if `start()` were called twice. To change this, the
`start` and `close` methods were removed in favor of specifying the callback at
creation, and allowing destruction to take care of closing the watcher.