Embed libuv handles into Python object structures

This avoids having to malloc libuv handles right after allocating Python
objects, thus saving one allocation. Also, since we now have a reference
to each handle type, there is no need to do so much casting.

Now, this approach introduces a slight change in behavior as a side
effect: since handles are now embedded into Python structures, the
lifetime of the handle has to be the same as that of the Python object. This
means that when a Python object is garbage collected but the handle
wasn't closed we need to resurrect it and keep it around because libuv
needs the handle pointer to be valid until uv_close's callback is called.
The code to this is not pretty, but I'm not the first one to do it, Stackless and
Greenlet do it and also some standard library modules.
Adapted weakref test
Raised libuv revision