TSaslTransport.read() should return available data before next frame

Fixes an issue where the TBufferedTransport attempts to read a number
of bytes and the underlying SASL transport attempts to read a new
frame from its own transport rather then providing the caller with the
data that still resides in its own buffer.

This changes TSaslTransport's read to match the Java implementation of
the Java TSaslTransport.java from the thrift distribution.

Change-Id: I2c904cfcef80fe2214d1e59f7515203f4b181742
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5524
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: jenkins