add query timeout feature

This commit addresses https://github.com/cqlengine/cqlengine/issues/245

I failed to provide a consistent API for all the Query types (DML, Abstract and Batch).

- BatchQuery accepts the timeout in the constructor.
- AbstractQuerySet has a timeout method
- DMLQuerySet is executed immediately so in order to add a timeout you have to either set it on the Model or use a context manager (which I prefer to avoid).

BatchQuery and AbstractQuerySet seem like the solution is ideal but it conflicts with DMLQuerySet.
I'm leaning towards adding a timeout() method to the BaseModel class in favor of the context manager.
I'd like to get some input on this.
This is not how we recommend creating new rows.  In fact, there are issues that will arise from not using `.create()`