Create sessions from URL

When you need to connect to a database that is only known at runtime, the existing API required that you define a new database name and store the URL in the appropriate environment variable.  This PR adds a `db_url` keyword parameter to the session classes that provides a URL directly.  The `dbname` parameter is still required to maintain compatibility.  If it is truly unnecessary, then we can remove it in a future release.