Move the fake DBI wrapping code to its own module

So other tests can use it
Initial import of RDBMSRetriableOperations from the Genome tree
Make the retry times configurable
Send a 'retry' signal when the operation is to be retried
Make retriable wrappers for the basic retriable operations

create_iterator_closure_for_rule
create_dbh
_sync_database
do_sql
Add do_sql() to UR::DataSource::RDBMS

A safe wrapper around $dbh->do() that will send the do_failed signal if
there's a problem, allowing retriable operations
Add method for datasources to indicate the DBI handle class

We'll override it in tests
get_default_handle/connect is a retriable operation

Add a test for retriable operations
do_sql() should get the err string from the handle object, not the DBI package

Add test for do_sql
Improve readability of the ok()s in the test

got rid of note()

Added a label to each test call to distinguish them
Set the error_message on prepare to the object instead of the class

Makes it easier to make the test quiet
Add test for retriable commit
Move Oracle date format setting to its own method
Hack to avoid infinite recursion - see the comment in the code

This was happening when a concrete datasource has an init_created_handle() that
used $ds->do_sql() to perform some "alter session" statements.  do_sql() had
to call get_default_handle() which recursed back into the handle creation, since
the earlier call to get_default_handle() hadn't finished yet.

get_default_handle() is implemented as a cached/calculated property; it doesn't
cache the velue until the creation code finishes running.
Merge branch 'retry-db'