Add replace support to SQLite adapter
Correctly raise error when using an invalid virtual row block function call

Because VirtualRow is a BasicObject subclass, and raise is an Object
method, not a keyword, raise inside a VirtualRow doesn't raise an
exception, it treats it as calling the raise database function, you
need to use Kernel.raise to raise an exception.  Not caught previously
by the specs as the specs also checked for literalization, and an
exception is raised later when trying to literalize the exception
class.
Minor cleanup for Dataset#replace refactoring
Show example of placeholder use with raw SQL in prepared statements guide
Allow CHECK constraints to have options by using an options hash as the constraint name

Previously, the API did not allow for check constraints to have
options, since all arguments to the constraint method were used
for the constraint itself.  This allows you to pass an options
hash as the constraint name, allowing you to use constraint
options.

This is most useful to allow NOT VALID to be used when adding
CHECK constraints to existing tables on PostgreSQL.