Cursor stack

Support a cursor stack and better syntax for transactions, using context managers instead of decorators. Nested transactions are also supported.

```python
with graph:
    graph.store(V(1).knows(2))
    with graph as db:
        db.store(V(1).knows(3))
```