Use WeakIdentityLinkedHashSet for RubyThreadGroup:

We extend WeakIdentityHashMap for WeakIdentityLinkedHashMap, and use it
for WeakIdentityLinkedHashSet. Sorry that this was a naive
implementation and I didn't write any tests for this. Originally I want
to do something like java.util.LinkedHashMap, but it seems
WeakIdentityHashMap didn't implement every thing we need to do the same.
Therefore I decided to just write what we need for RubyThreadGroup.
We could complete this in the future.

Note that this should also fix a bug where WeakIdentityHashMap#valueRemoved
is not called properly.