This directory contains code to interoperate with Google's official
Protocol Buffers release.  Since it doesn't really have a name
besides "protobuf," calling this directory "googlepb" seems like the
least confusing option, since it lives in the google::protobuf
namespace.

We support writing into protobuf's generated classes (and hopefully
reading too, before long).  We support both the open source protobuf
release and the Google-internal version (which is mostly the same
code, just in a different namespace). A single compile of upb can
support both (there are no conflicts thanks to function overloading).

The internal version supports some features that are not supported in
the open-source release.  Also, the internal version includes the
legacy "proto1" classes which we must support; thankfully this is
mostly relegated to its own separate file.

Our functionality requires the full google::protobuf::Message
interface; we rely on reflection so we know what fields to read/write
and where to put them, so we can't support MessageLite.
