Setting cassandra transaction timestamp

We would like to have the ability to pre-set timestamps on cassandra transactions, to manage modification ordering when updates are submitted by clients running in parallel.

I decided to implement a method ((StandardTitanGraph.newTransaction(timestamp) ) to open a timestamped transaction manually, if needed. This way, it does not interfere with transaction auto-starts, when updates are executed directly on a graph. Some extra care for managing the state of the transaction is needed, unlike the alternative approach, where it could have been set at graph.commit(timestamp). However, this way the intended functionality is at least possible, if not convenient. If the method provided here will turn out to be useful for a larger audience, the graph.commit(timestamp) functionality support can always be added.

I added a test (AbstractCassandraGraphTest) to be run against all Cassandra backends. Various operations with timestamps are submitted for execution. We verify that a modification is overwritten by another modification, only if the latter one comes with a higher timestamp.