Raised libuv revision
Avoid some ifdefs
Avoid having an extra struct for request associated data
Reduced memory allocations on Stream.write to one

Only one allocation is performed right now, and no memory copying takes
place. The same principle can't be applied to writelines, however: 2
extra allocations are necessary in order to hold the list of buffers,
even if the buffers themselves don't need to be copied.
Reduced memory allocations on UDP.send to one

Only one allocation is performed right now, and no memory
copying takes place. The same principle can't be applied to sendlines,
however: 2 extra allocations are necessary in order to hold the
list of buffers, even if the buffers themselves don't need to be copied.
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
Real men use container_of
Adapted Loop.wakl implementation to changes in handles internals
Removed uneeded casts
Clarify comment on tp_dealloc and don't reset handle->data
Embed libuv requests in pyuv Request objects

Avoids having to malloc them since the Python object needs to be
allocated anyway.
Raised libuv revision
Updated documentation
Raised version and updated changelog
Updated README