Shift connection logic into the drivers.

This allows classes that only access the driver (like schema platforms)
to have access to lazy connection features. I think this also makes the
drivers better encapsulate their behavior. Before some of the
connected/connection logic was in the connection class which I think
will slowly become the datasource class, or a wrapper for the various
SQL based datasources at the very least.