Added basic logging to migrations.

Also re-factored the code in Migrator to match the behavior from EF6 by running each migration in a separate transaction, instead of running all in one transaction. The UpdateDatabase code path is also used to generate SQL, with a "simulate" flag set to true, in which case the sql statements are collected but not executed.
Updated a bunch of tests and added more Migrator tests.
In any case, serializable is super expensive. Is that what we had in the EF 6.x stack?