Re-implement ThriftBinaryDeserializer

This implementation uses its own transport and protocol,
rather than the ones from TDeserializer.

Overrides some of the methods in TBinaryProtocol so that
Thrift does not take very large amounts of CPU while
skipping bad records in some cases.