Improve SQLite multi-threaded use

* Use sqlite3_stmt_readonly to determine if sqlite3_changes should be called
* Remove sys.dual dependency, improving multi-threaded applications

sqlite3_changes shouldn't be called for select statements. If a statement is readonly, by definition it should't make any changes. Using this logic, the sys.dual hack don't need to be used, which was giving problems in multi-threaded applications.

All tests passed with this change.