Add transaction blocks

This adds transaction queue functionality to the SQLConnectionHandler. There is the ability to have multiple queues per connection handler, as well as the ability to use returned values from a previous sql query in subsequent queries in the queue.
Queues are created using the `create_queue` method and then added to using the `add_to_queue` method. Calling `execute_queue` executes the queue, as expected.
To use previous result values, you need to know the order a previous query returns in. Then, you can use a similar format to the string format function to insert these values. The tests added give a good example of this functionality.
> Okay, but the relevant credentials are already in memory and will be used

Actually, no, since you are not passing admin=True to _open_connection here.

I think the solution is to store the value of admin passed to constructor, and use it whenever _open_conmection is called (and you can remove admin as a parameter to _open_connection).

Just the same, why would the connection be closed here? If it is closed, isnt that unexpected and deserving of an exception?