Add a DSN class for Connections
Add an abstract implementation of connection

This should make the creation of different protocols easier