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.
Not sure it is worth making configurable. We should discuss with @anpete if there was a good reason to user serializable in the EF 6.x stack and otherwise change both to not specified.