Fix incompatibilities with new libuv

A previous commit bundled a newer version of libuv, 0.11.28. It has
numerous backward incompatibilities with the previous version, 0.10.21.
This commit gets the tests passing again.

One nice feature of the new version is that it no longer passes structs
by value, which makes it easier to use via FFI. It allows us to remove
the workaround in lib/uv2.c and get back to pure Lua.