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 should return a new QuerySet rather than modify the current one.