implement ConcurrentHashMap and AtomicReferenceArray

This is the simplest possible ConcurrentHashMap I could come up with
that works and is actually concurrent in the way one would expect.
Mike pointed out that there is potential for starvation, especially in
the case of a thread trying to grow or shrink the backing array while
other threads are constantly adding and removing, so there may be room
for improvement there.  I think this is a good place to start, though,
and it should perform well for all but the most pathological workloads.

I had to do a bit of refactoring, including moving some non-standard
stuff from java.util.Collections to avian.Data so I could make it
available to code outside the java.util package, which is why I had to
modify several unrelated files.