obfsproxy: groundwork for new protocols

Please review and pull from https://github.com/zackw/obfsproxy/compare/master...more-protocols (you will probably find it easier to read individual changes in the series). The branch is called "more-protocols", but I haven't started writing new protocols yet; highlights of what you get are:

  • cleaner protocol-specific API
  • better way to define protocol vtables
  • imported the Tor container library
  • consistent use of "infallible" memory allocation
  • many of the unit tests have been improved
  • fixed some nasty memory leaks in obfs2 and minor ones elsewhere

I plan to keep hacking on this branch; the last commit I'm asking for review of at this time is https://github.com/zackw/obfsproxy/commit/2dd47ce6624d374932f7c212b1f719ad09143c5e (but nothing more is likely to show up till this evening).