Refactor data buffers, add Custom RPC protocol API

  * Make buffer length a part of the `ProtobufCBuffer` structure. Change BufferSimple code slightly to support this.

  * rpc:
     - Split the RPC code into client and server parts for clarity.

     - Implement custom RPC protocol API. Use
       `protobuf_c_rpc_client_set_rpc_protocol` and
       `protobuf_c_rpc_server_set_rpc_protocol` to set the custom (de)serializers.
       The default RPC protocol is the same as before.

     - Begin making data buffers more generic (`ProtobufCDataBuffer` type now has
       `ProtobufCBuffer` type as its base). Hide `ProtobufCDataBuffer` type.