Moved to atomic field updaters.

Replaced the AtomicBoolean, AtomicInteger, AtomicLong and AtomicReference instances with volatile fields and field updaters to save on memory and allocation.

Unfortunately, the Clojure test ```chunk_test.clj:test-chunk``` fails and I don't know why since I don't understand what it is supposed to do. It appears numbers get lost somehow.