BulkLoader: Make send() thread-safe
BulkLoader: Make send() thread-safe

We see ConcurrentModificationExceptions in
BatchStatement.ensureAllSet(), which means that some other thread is
mutating the batch statement in the background. One possible such case
is when a deferring future from sendPrepared() completes but another
thread is in send(Object, DecoratedKey, Statement) and has already
passed the BatchStatement to executeAsync() but has not set
batchStatement to null.

Fix the issue by making send() synchronized to make sure only one thread
(from a deferring future, for example) accesses batchStatement at a
time.

Fix suggested by Piotr Jastrzebski.

scylladb/scylla-tools-java,scylladb/scylla-tools-java,scylladb/scylla-tools-java,scylladb/scylla-tools-java