Fixed race condition where synchronouslyClose() would be called multiple...

... times if AbstractAsyncWriter.close() called twice simultaneously

Closeable requires idempotentency: now only writing BAM index once when closing