Row values can be accessed via subscripts.

Also added support for fetching the entire row as an array or dictionary.
errorFromSqliteResultCode doesn't need the database

When generating errors from a result code, passing the database isn't necessary, since we can use `sqlite3_errstr` instead of `sqlite3_errmsg`.

Also fixed mis-capitalization of SQLite.
Database and Statement objects don't have to be opened or closed.

Since Databases and Statements can't be reused after being closed, it doesn't make sense to have an explicit step to do so.

sqlite3_open_v2 is also now used, so statements can outlive the database.
error argument is now optional for Bindable types
Database methods no longer require an error: parameter
DatabasePool methods no longer require error parameter
Error parameters are optional for all Statement methods
Error parameters are optional for all Helper methods
Statement.valueAtIndex returns all integer columns as Int64

Otherwise 64-bit values would be inaccessible from 32-bit architectures, and possibly cause a cast failure.
Simplified Statement iteration with step() and query() methods

These methods can be used easily with for-in loops, making looping much simpler and clearer.
Merged .step and .query methods, so all sequences iterate over the Statement object

Since Statement supports subscripts, there's not much value to having separate methods for iterating over dictionaries.

Also removed the .collect() methods, since those can be achieved better with a for-n loop of a map() function.