Basic inclusion tidying on the public headers:

* Always include other headers outside extern C blocks.
* A first, very conservative pass at not including unnecessary headers from
  other headers.
* When needed, include event2/util.h first, and do not reinclude anything
  that it includes.
* Similarly, when including event2/event.h or event2/bufferevent.h, do not
  reinclude anything that they include.  (We make an exception for the
  legacy event.h, since its nature is to pull everything in.)