Add protobuf descriptor

Intermediate PR to receive early feedback.
Could this class be merged with BaseDescriptor?