Rework the DefaulPromise to eliminate race reported as [#2157]

This also remove some more synchronization and make heavy use of atomic operations now. The downside is that it creates more objects when FutureListeners are added. But this was the only performant way I could find to still make sure the order is correct while still not do heavy synchronization.
Provide an optimized AtomicIntegerFieldUpdater, AtomicLongFieldUpdater and AtomicReferenceFieldUpdater

Make use of these in the new DefaultPromise but also in other areas.
Not create an Entry if only one GenericFutureListener was added