One more little test for HashSet

Making sure the enumerator throws when the HashSet is modified -
ensuring I don't adventure into changing the enumerator behaviour.
Added new class ReadWriteLock and tests for it

Also Added mention to ReadWriteLock in readme
Changed HashSet to SetBucket in ProxyObservable

SetBucket allows to modify the set while an iteration is going on.
Observable extensions
Huge change to Progressor and related classes

Got rid of IProgressor and IProgressorBase
Rewrote Progressor
Added some tests for it
Updated classes that use them
Expect more changes