Feat:
- Adds native Python protobuf definitions (`python_proto_library`) instead of
referencing the protobufs from C++. The tradeoff is a more Pythonic library
for a small performance penalty for serialization/deserialization across the
Python <-> C++ boundary. However, the cryptographic operations still represent
the majority of the work in the protocol and therefore the penalty introduced
via the extra serialization should be negligible.