`dbmate` package was starting to get a bit polluted. This PR migrates each driver into a separate package, with clean separation between each.
In addition:
* Drivers are now initialized with a URL, avoiding the need to pass `*url.URL` to every method
* Sqlite supports a cleaner syntax for relative paths
* Driver tests now load their test URL from environment variables
Public API of `dbmate` package has not changed (no changes to `main` package).
Adds `dbmate dump` command to write the database schema to a file.
The intent is for this file to be checked in to the codebase, similar to Rails' `schema.rb` (or `structure.sql`) file. This allows developers to share a single file documenting the database schema, and makes it considerably easier to review PRs which add (or change) migrations.
The existing `up`, `migrate`, and `rollback` commands will automatically trigger a schema dump, unless `--no-dump-schema` is passed.
Closes https://github.com/amacneil/dbmate/issues/5