Add DBURI role.

Implements a `db_uri` attribute that stores a URI::db object. URIs passed to
the constructor will have the various parts from the App::Sqitch `db_*`
attributes merged in to them. The default URI consists solely of those values.
Add port, remove unused class.
Install URI::db from GitHub.

Should remove this line once URI::db is released on CPAN.
Skip URI::db for now.
Add `db_uri` attribute to Engine.

And have the `destination` reference it.
Make db_uri read/write.

But don't merge it with the default when setting the value.
Still merge when the value is set via the constructor, though. At
least for now.
Switch to db_uri in the SQLite engine.
Replace db_name with db_uri in SQLite engine.

One test failing, but I think I am going to reverse some of this stuff, and
move the URI into the base engine class.
Move the `db_uri` attribute into Engine.

This is the only place it should ever be needed, frankly. If it's not passed
to the engine, it will be fetched from the config, and if it's not there, it
will default to "db:$engine". For back compat, it will merge values from the
engine-specific config and command-line options. One or both of those bits
will be deprecated and removed.
Adjust SQLite configuration for DB URIs.
Move client config to Engine and restore sqitch_db config.

All engines need client, so just put it in the base class. Also, remove the
sqitch_db_uri config, as we just want to allow the name to be set. It should
not have a full path, but just be in the same directory as the main database.
Restore sqitch_db_uri.

More complete, and corresponds to the attribute name, so will be written to
the default config file created by `init`.
Deprecating old config vars, so they won't be returned by the method.
Convert the Postgres engine to use a DB URI.
Convert the MySQL engine to use a DB URI.
Set URI params in deterministic order.

Because URI::_server complains if the port is set when there is no host, and
the hash approach would sometimes cause the port to be set before the host.
Die on warnings.
Just emit a warning for no MySQL db name.

Turns out you can connect with no DB name. Which is fine if your change script
will create things in the proper database anyway. So just warn, to make clear
that the user probably should have specified a database name.
Convert the Oracle engine to use a DB URI.
Convert Sqitch->engine into a constructor.

No need to cache it, there will rarely be more than one. Besides, we will
soon want to pass URIs to it.