Extract reserve methods.

Can be used to more easily monkey-patch the code to always use the default SQL statement (see #33).

In my particular case I want to use the default SQL statement with MySQL to avoid mysqld logs '[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.'

These logs are triggered by the optimized SQL. The `.reserve_with_scope` method can be used as a hook for a monkey-patch without copying lots of code.

Ideally I'd like to have a configuration option for this, but I guess those extractions are an improvement anyway.
@klausmeyer thanks, I'll change that and rebase/squash