Fix deprecation of raw *pointers

Convert all raw `*T` pointers to `const *T` pointers
Add Cargo.toml
Fill Cargo.toml authors and ignore Cargo.lock
make: Use --print-file-name instead of --crate-file-name
Update deprecated function calls
Fix an unnecessary_typecast warning
Annotate FFI structs with #[repr(C)]
Fix reply test comparisons to literal arrays
Build examples with cargo, and update their deprecations
Use Travis's native support for rust and cargo
cargo: squash examples doc/test
Switch to io::{USER_FILE,USER_DIR}
Use io::USER_FILE in tests too
Change most statics to consts

Only TEST_DATA is left as a static value for testing lifetime.
Restore the typecast in mode_from_kind_and_perm

This reverts commit 39e78dab8fe8269dd8abedc2f9fcf22c131f2f05, because
some platforms like MacOS have "mode_t = u16" and really do need the
typecast.  Added #[allow(unnecessary_typecast)] with a comment instead,
so Linux with "mode_t = u32" doesn't get a warning.