3.0 - Re-factor connection handling logic

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.