Fix #90: added `with` statement support to the Database class.

This PR adds support of `with` statement for Database class. 
Basic usage:
```
with dataset.connect('...') as db:
        db['...'].insert()
```
                
If an exception is raised within the scope of `with` then all changes are rolled back and exception is passed forward. Otherwise all changes are committed upon leaving `with` scope.

Tests are added as well.

This PR partially fixes the issue https://github.com/pudo/dataset/issues/90.