IMPALA-1442: Better fix for non-buffered SASL transports

The Thrift SASL implementation relies on the same transport being used
going in and out for the same peer socket (see
TSaslServerTransport::Factory::getTransport()). This means that the
transport's factory can't be used compositionally, as intended in the
last patch for this issue, as the wrapper factory has to be sure to hand
the SASL factory the same transport every time the same socket is passed
in, but we were creating a new buffered transport on each occasion.

This patch does something much simpler: the SASL factory is forced to
always create a buffered transport. This rather breaks compositionality,
but it was already broken by the factory's implementation.

Change-Id: Iec1a4337778e774ab8748e0412515abd07399c94
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5163
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: jenkins
(cherry picked from commit 3d6e44d6c556fdc8d5c4b8208cbc78328ef72aaf)
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5192
Reviewed-by: Henry Robinson <henry@cloudera.com>
Track unexpected remote reads

With this patch, we mark every scan range that is expected to be a
local read according to the file block metadata from the FE. After
finishing the scan range, we check if it was actually local and if
not, log a warning and add it to the runtime profile. This will help
us diagnose cases where the metadata is stale, causing remote reads.

Change-Id: I546da4ffb80d0af8ff8f5120e9639f9943f8b77d
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5115
Reviewed-by: Skye Wanderman-Milne <skye@cloudera.com>
Tested-by: Skye Wanderman-Milne <skye@cloudera.com>
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/5184