Improve the separation of DB implementations

To create a new DB type, create a child of Connection and DbInstance,
and add these to the DbPovider.