Add support for bufferevent-based transports

Description

We've been planning for a while to move Tor's transport mechanism from using our own buf_t implementation to Libevent's bufferevents, which in Libevent 2.0 allow us to use IOCP on windows, full scatter/gather IO, and other useful things.

The latest version of the code is in the highest-numbered "bufferevent*" branch in my public repository, currently bufferevent3.