Add WeakHashSet to the collections library.

The WeakHashSet uses a WeakHashMap, wrapped round a Java newSetFromMap.
SI-7150 - Remove fishy implementation of WeakHashSet from compiler

Replace with full-featured version which wraps java's WeakHashMap.