* Improve TCFType macros
This adds the following new features:
* `declare_TCFType!`: Generics are accepted.
* `impl_TCFType!`: Non-defaulted generics are accepted, and impls are
fixed to be for all generics.
In addition, some warnings are silenced and the macros no longer depend
on any traits being in scope in the caller.
* Support generics in impl_CFComparison
* Add generic test for macros
`core::ffi` is the preferred way to access these type definitions.
Begin removing uses of the versions from `libc`.
`libc::c_void` is not exactly the same as `core::ffi::c_void` but
some code has tried using them interchangeably (like in io-surface).
`libc::size_t` is `usize` on all current platforms.
Switch from using `libc` types to `::std::os::raw`. This is a breaking
change due to the differences in how `c_void` is defined.
`core-foundation-sys` no longer needs the `libc` dependency.