rdkafka 0.8.0

Rust wrapper for librdkafka
Documentation
Native\* structs
================

`Native*` structs are thin wrappers around native resources that are often needed when
a native resource is required by other native resources. Examples:
 - `RDKafkaConfig` is requred by `RDKafka` for client creation: `NativeClientConfig` is used.
 - `RDKafkaClient` is requred by many methods to consume and produce data: `NativeClient`
   is used.

Specifically, `Native*` structs are used for:
 - Implementing unsafe traits according to the documentation of the resource being wrapped.
   - Example: `Send` and `Sync` for `NativeClient`
 - Implementing ownership helpers:
   - `ptr()` -> reference
   - `ptr_move()` -> ownership
   - `Drop`

Native structs shouldn't be used for:
 - Exporting methods of the resource being wrapped.
 - Creating the native struct itself.

Each `Native*` struct should be created from the higher level resource. Examples:
 - `ClientConfig` creates `NativeClientConfig`
 - `Client` creates `NativeClient`