Starts some tests around DatabaseMigrator

I'm noticing that the dry run needs some logging done at the level of
the DatabaseMigrator, so I'm building testing around it. This requires a
TestableDatabaseMigrator which allows me to adequately test the
internals of the class. I had to unseal the class and make the private
readonly fields into protected non-readonlys.