Executes the provided query asynchronously. This method does not block. It returns as soon as the query has been passed to the underlying network stack. In particular, returning from this method does not guarantee that the query is valid or has even been submitted to a live node. Any exception pertaining to the failure of the query will be thrown when accessing the {@link ResultSetFuture}.
Note that for queries that doesn't return a result (INSERT, UPDATE and DELETE), you will need to access the ResultSetFuture (that is call one of its get method to make sure the query was successful.
@param statement the CQL query to execute (that can be either any {@code Statement}.
@return a future on the result of the query.
@throws UnsupportedFeatureException if the protocol version 1 is in use anda feature not supported has been used. Features that are not supported by the version protocol 1 include: BatchStatement, ResultSet paging and binary values in RegularStatement.