Guava: remove HashSetMap and ArrayListMap

Use Guava Multimap instead

Fixed TimedHashSet to act as a Multimap wrapper and renamed to TimedMultimap

Added CollectionsUtils:
- add removeValue method to remove all instances of a value from a multimap
- add unmodifiableList and unmodifiabeSet methods to make it easier to return an unmodifiable collection from Multimap.

changes made to other classes to use Multimap and workaround lost abilities.

general collections improvements

did not remove WeakHashSetMap because Guava does not offer an equivalent (afaik)

did not remove SetMap abstract class because WeakHashSetMap uses it.