Start schema for Oracle.
Use varrays.
Lowercase.
Start Oracle engine.
Test creation of sqlplus script.
Test and document passing multiple file hancles to spool().
Test non-live oracle stuff.
Get sqitch initialization working.

Added the live tests. Some still fail, of course, but this is a start. In
particular, all the queries that use LIMIT and/or OFFSET need to be rewritten
to use ROWNUM instead. The first query to run in the tests, in `_cid()`, has
been updated as such.

But more importantly, the loading of the sqitch schema now works. Man but
SQL*Plus is fussy! Took me forever to realize that the `/` after the CREATE
TYPE statement, which is required, would make SQL*Plus or Oracle think that it
was PL/SQL and die, because it would parse everything to that point, and there
was no COMMIT yet. So I just removed the transaction stuff. Then fixed up
all references to that type to be schema-qualified, as is the unique index
on events.

Also suprressing output in `initialize`. Nasty, though; probably should grep
through the output on error and show those lines that look like errors.
Have _capture() send output to STDERR on error.
Handle array aggregates.
Get more Oracle stuff working.

About half the live tests pass now.
Make Oracle timestamp format consistent with pg and sqlite.

Avoid the "ORA-01801: date format is too long for internal buffer" error by
breaking up the `to_char()` into two separate calls, one for the date, one for
the time, and concatenating them.

Also override changes_requiring_change() and name_for_change_id() to avoid use
of LIMIT. Need to use CTEs because, while Oracle allows scalar subqueries,
they can refer only to columns in their immediate parents. And because we need
to LIMIT, the parent has to be `SELECT * FROM () WHERE rownum = 1` -- not the
main query. Annoying, but the CTE is a good enough workaround.

Also update dt_for_event() in the test suite to execute a different query for
Oracle, again to avoid OFFSET and LIMIT.
More Oracle fixes.

* FROM clause required, so Select from dual.
* Use bind_param_inout_array() to get multiple values from RETURNING.
* Use COLLECT() to construct arrays.
* Pass rownum to parent query for proper ordering.
Add _multi_values() to the DBI engine.

Postgres and SQLite support mulitple VALUES rows (`VALUES (), ()`), but Oracle
does not. So add a method to construct that clause, and then override it in
the Oracle engine to use UNION ALL, instead.
Man, doing LIMIT/OFFSET on Oracle is convoluted.
Fix up CTEs.
Override change_offset_from_id() in the oracle engine.
Keep notes.
Add a second in oracle tests.

current_timestamp is per-statement, so since we have stuff that does a bunch of inserts in a single statement, we need to tweak the test to get the ordering of things right.
Get oracle search working.

Yeah, had to duplicate a lot of the code. Should probably generalize it more, but this will do for now.