Refactor connection handling

Work in progress, just getting my travis on.

This PR should solve issues with transactions setting up too many connections, transaction not closing their connections and other stuff.

This PR should also help make the connnection codebase more understandable and more general per dialect.
You are not handling time zones in this PR right?

This option should probably be extended to all dialects / or just give the user the option to pass a timezone