Add zero-copy column getters and fix potential non-UTF8 Strings
Add zero-copy column getters and fix potential non-UTF8 Strings

Sqlite3's notion of text corresponds more closely to Rust's notion of
[u8]s than strs in two important ways:
 - Sqlite3's text, like [u8]s and unlike strs, can contain non-UTF8
   sequences.
 - Sqlite3's text, unlike strs, must be null-terminated.

This makes sqlite3_column_blob work at least as well as
sqlite3_column_text for getting a str into Rust. Never using
sqlite3_column_text has another advantage: mixing calls to
sqlite3_column_blob and sqlite3_column_text may cause the underlying
buffer to be reallocated, invalidating the old buffer. By only ever
calling the _blob variant, the buffer returned will be valid for as long
as the row. This makes it possible to safely expose zero-copy column
getters for &[u8] and &str.

austinwagner/rust-sqlite3,pnispel/rust-sqlite3,dckc/rust-sqlite3,dgilman/rust-sqlite3,PeterReid/rust-sqlite3