whitespace
use strict/warnings
add test for multiple data sources using RDBMSRetriableOperations

This documents a bug that didn't actually get shipped that would cause
the default retriable methods on RDBMSRetriableOperations to wrap the
first data source to use it even for subsequent data sources.
remove unused variable declaration

It was probably originally intended that $parent_sub be cached for
performance but that would cause a bug when using multiple data sources
(test already added).  Instead we just remove this caching mechanism for
now.
make deep recursion fatal

This implementation gets stuck in an infinite loop if there are any
intermediate classes in the inheritance between the data source and
RDBMSRetriableOperations.
search for datasource method recursively

The prior implementation would get stuck in an infinite loop if there
were any intermediate classes in the inheritance between the data source
and the inheritance of RDBMSRetriableOperations.
cache results to avoid repeated recursive calls
add test for infinite recursion bug

This documents a bug in a prior implementation of
RDBMSRetriableOperations's rdbms_datasource_method_for that would get
stuck in an infinite loop if there were any intermediate classes in the
inheritance between the actual data source and the inheritance of
RDBMSRetriableOperations.
support intermediate classes inheriting RDBMSRetriableOperations

This was originally intended just to fix a bug when trying to have an
intermediate class between RDBMSRetriableOperations and some concrete
DataSource but expanded into a couple fixes and some trivial changes.