Updates to key handling (and more)

Updates key handling in two places: when retrieving and storing values, allows IOlists to be used; when querying views, allows arbitrary terms to be passed in (e.g., boolean, integer, arrays).

Couchbase views are not required to emit strings as their keys. The current logic only works when the keys from a view are strings.

Includes some updates from @wcummings fork relating to connection and error handling.