Add support for encoding/decoding objects in Google protobuf

We avoid the full Google protobuf library, but instead setup a
simple encoder/decoder using the CodedInputStream and its matching
CodedOutputStream to handle message encoding and decoding directly
against the user object.

This allows us to serialize any object we support, without first
copying into the generated Message implementation that the protobuf
runtime would normally expect us to be using.

Testing is very limited.  We do however have a very simple mapping
of our objects onto protobuf's wire format.

Change-Id: Iec195ecacb1fb73458f27dc41d506379b5309f31
Signed-off-by: Shawn O. Pearce <sop@google.com>
8 files changed