bug:connection close after 'with transation()'

def transaction():
    with connection():
        return _Transaction()

observed:
after _Transaction() returned, the __exit__ of _Connection will be called.

The fix is simple. In __enter__ of _Transaction(), call _db_ctx.init().
The should_cleanup attr of _Connection is also removed. Because there is no way
to set the value of should_cleanup in _Transaction().