Add compatibility with Protobuf 3.12 (#4291)
In Protobuf 3.12, classes generated from protobuf files are declared as
`final`, so use those classes as members rather than base classes.
Ref: https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.0