Add initial gunzip support
Add tests for isGzipped
Refactor protobuf scalar types logic for packed repeated fields

This is a pretty major refactor of the typing system, to allow types
to be specified down to the bit-size. This is necessary, because
without it, there's no way to infer the types for packed repeated
fields (as is used a lot in Polar's messages).

Also enabled the training session unit tests - they work now :)

Note, the google_message2.dat.expected.* changes are a result of the
default varint parsing switching from uint* to int* (to better match
protocol buffers' history).

Note also, the google_message2.dat.with_fields.expected.* change is the
result of the fields 3 and 4 correctly being being listed now as int64,
not as sint64 (ie StandardInteger instead of SignedInteger). Those
field values now match the `protoc --decode_raw` output.
Undo dev-only test expectation clobbering