To optimize Sqlite3 queries, prepared statements are typically
kept instead of re-prepared so that they may be executed multiple
times. This allows for prepared statements to not be finalized on
destruction, allowing for reuse even when an error has occured.
* Replace getrow with get_exactly_one_row, since there was no
way to detect when another row would be available
* Introduce rowfold, which allows for iterating over all rows
returns fromed a SQL query
* Introduce functions into the interface that were left out