Revert "Removed old protobuf code"

This reverts commit 5db23b6b51ee7b280f54a9dbe187c7b5dcdd6531.
Support multiple protobuf backends.

Closes #22.