32-bit enum sets and weak map improvements

### EnumSet

- Added `BitSet32.of()` which accepts an iterable (!205)
- Added `.toSet()` and `.toMutableSet()` (!205)
- Added `enumSetOf()` and `.toEnumSet()` (#170, !206)
- Optimized `enumSetOf(Foo.entries)` (!206)
- Optimized 32-bit `EnumSet` (#170, !206)

### Weak

- Added `WeakRef.isEmpty()` and `WeakRef.isNotEmpty()` (!207)
- Added `WeakValueHashMap` (#178, !225)
- Added `toString()`, `equals()` and `hashCode()` on `FakeWeakRef` (!225)
- Documented the thread safety of `WeakRef` and `WeakMap` (#180, !225)
- Added a wrapper for the JVM `WeakHashMap` (#179, !226)
- Added a wrapper for the JS `WeakMap` (#179, !226)

### Dependencies

- Kotlin 2.2.21