Remove dependency on internals of opaque structs

The guts of bufferevent and evbuffer changed from libevent1 to libevent2.
The libevent2 docs suggest that code that relies on the libevent1 APIs won't
break on libevent2, but of course depending on the internals of opaque structs
voids that warranty.

This commit removes that dependency, forward-declaring those structs
and removing the small amount of code that depended on them.
All tests still pass, so that code (bufferevent.read in python)
must not have been used/covered.

It looks like bufferevent.read could be implemented using the public API
(bufferevent_read) like bufferevent.write is, but I didn't need it,
and the tests don't cover it, so I've instead just removed bufferevent.read
for now.

Tested on OS X with libevent2 (Homebrew) installed, but I think it should also work with libevent1.