Wrapped migrations in a transaction only on DBs with transactional DDL.
Used the same instance of atomic for entry and exit.

Since all state is maintained on the connection at this time and none in
the atomic, it doesn't matter, but it could introduce some subtle bugs
if the implementation changed in the future.