support sql transactions
this allows the `con` argument of `pd.read_sql`/`pd.read_sql_query` to be a sqlalchemy [`Session`](http://docs.sqlalchemy.org/en/rel_1_0/orm/session.html) object.

this allows for the use of temporary tables.

@adamgreenhall Thanks for the contribution! 
Can you provide a bit more context? (I never used the ORM part of SQLAlchemy, only the Core part) But as a `Session` has a `begin` method and `execute` method, I suppose `read_sql` would just work regardless you provide it a Session or connection? (as the support for connections was just added in #10105, which should already allow temporary tables when using a Connection)

Why does it need sqlalchemy 1.0.0 ?

The reason your tests fail, is because it seems to run the tests with the fallback mode (although you put it in the correct test class). But this seems to indicate that it does not recognizes it as an sqlalchemy engine/connection/session, and therefore tries to use it as a DBAPI connection in fallback mode (hence the error 'has no attribute 'cursor'')
 @jorisvandenbossche - #10105 does the trick with `sqlalchemy.engine.Connectable`. I didn't check the docs on master before adding this - learned my lesson for next time. Thanks!

ps. Not sure what the sqlalchemy recommended way to handle transactions is now - I think sessions got added in 1.0 - that was just the first thing I found in the docs, but the `with engine.begin():` code seems simpler.
 But

```
In [46]: isinstance(session, sqlalchemy.engine.Connectable)
Out[46]: False
```

so the current code is not going to work for a Session. 
(I never used Sessions, but I can imagine that support for it would be useful for people using it)
