Memory-based transport rewrite.

The old implementations of the memory-based transports (TBufferedTransport,
TFramedTransport, and TMemoryBuffer) shared very little code and all worked
a bit differently.  This change unifies them all as subclasses of a single
base (TBufferBase) which handles the fast-path operations (when requests
can be satisfied by the buffer) with inline methods (that will eventually
be made nonvirtual in the template branch) and calls out to pure-virutal
methods to handle full/empty buffers.  All of the buffer-management is now
done in terms of "base and bound" pointers rather than "pos" integers.

These classes were moved to TBufferTransports.{h,cpp}.  The .h is included
in TTransportUtils for backwards compatibility.

Also added a "TShortReadTransport" to assist testing transports.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665676 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/TPipedTransportTest.cpp b/test/TPipedTransportTest.cpp
index c1b371d..06950ea 100644
--- a/test/TPipedTransportTest.cpp
+++ b/test/TPipedTransportTest.cpp
@@ -2,6 +2,7 @@
 #include <stdexcept>
 #include <Thrift.h>
 #include <transport/TTransportUtils.h>
+#include <transport/TBufferTransports.h>
 using namespace std;
 using boost::shared_ptr;
 using facebook::thrift::transport::TTransportException;