Add the option to perform destructive migrations without downtime

By default when we detect unsafe migrations we use maintenance mode to
ensure we don't run into issues with missing/renamed columns or tables.

Here I have added the ability to tag unsafe migrations with a `# safe`
comment to instruct the deploy to ignore the unsafe migrations and
perform a zero downtime deploy. The migration will be run before the
deploy just like our usual safe migrations.