Adds support for compressing drmemtrace offline raw trace files with snappy as they are written out by the tracer.
Adds a new option -raw_compress which can select either "none" or "snappy" to control this behavior.
Implements this by adding a snappy_file_writer_t class which assumes small buffers and avoids unsafe operations for statically-linked operation. Since libsnappy contains un-parameterized allocations, and overriding the default operator new is unsafe, this means that snappy compression is incompatible with statically linked drmemtrace and the DR checks for unsafe behavior are suspended with a warning if enabled for a static build.
For post-processing, adds an istream wrapper around the existing snappy_file_reader_t for use by raw2trace.
Since snappy compression is slower than no compression for an SSD, compression is off by default. Adds a sanity check of setting the raw compression to "snappy".
Potential future work for this issue includes adding compression to the data sent over pipes for online drmemtrace, and adding compression to the smaller tracing client samples, but given the higher overhead those are not high priority.
Issue: #5427