Backport: Reset before CHECKing the status

When SQLite3::ConstraintException is raised, the error message will always
be "constraint failed", which isn't helpful enough. So sqlite3_reset()
should be called before CHECKing to get more specific error messages from
sqlite3_errmsg().

For more information, have a look at: http://www.sqlite.org/c3ref/step.html