Revert "Remove RandomGrabHashSet:"

This reverts commit f9519ad8f26c5a7c9a1fff54bfb6c2f127820e5f.
Discussion in the fred pull-request which aimed to move the class to fred (https://github.com/freenet/fred-staging/pull/198) has shown that the class is better placed in WOT than in fred.
Revert "Use Fred's RandomGrabHashSet:"

This reverts commit c5ec305817d051a45414967475e0023aae3d30d7.
Discussion in the fred pull-request which aimed to move the class to fred (https://github.com/freenet/fred-staging/pull/198) has shown that the class is better placed in WOT than in fred.
Implement unit test for RandomGrabHashSet:
- Adds size() to RandomGrabHashSet because the unit test can use it well.
- Notice that the testGetRandom() and testIndexConsistencyRandomized() take around 100ms on my Core 2 Duo which is acceptable IMHO.
- This originally was commit e4b381d138cefc181847b92d2d07371ced1fd1e0 on fred branch RandomGrabHashSet
JavaDoc member variables:
- Also switch their order because the JavaDoc of mIndex refers to mArray but NOT vice versa so it is good to list mArray first.
- This originally was commit 4ff7c3a679e6c7a9ad784b03d2632ed1748dbf3b on fred branch RandomGrabHashSet
Rename mArray to mData. Thanks Bombe!
- This originally was commit 04fca372c52577e2ea9daa16aa72dcc22c30a479 on fred branch RandomGrabHashSet
Apply remaining changes which happened upon RandomGrabHashSet while it was added to fred:
- Fix typo in JavaDoc
- Throw IllegalArgumentException instead of DuplicateObjectException
- JavaDoc exception throwing because its a difference to common HashSet.add()
JavaDoc why add() throws instead of returning false