Add dry run and more verbose logging

Dry run and verbose logging are added together because without dry run,
the verbose logging is technically unnecessary as all schema changes are
logged via the logged SQL they generate.  Likewise, without verbose
logging, a dry run cannot tell you want it will do on a live run.