Add protobuf descriptor

Intermediate PR to receive early feedback.
This should be a getter that returns a string. Copy elision will remove the unnecessary copy.