Additions, refactorings and unit tests added
* added SharedObservableCollection --> the same as SharedCollection, but has an event that notifies if the collection is changed
* refactoring at SharedCollection - so updates to collection change count are made with separate mutex lock
* changed MemoryMappedObject so if the object is not exist yet (freshly initialized memory mapped file --> it doesn't throw exception, but return an object with null stored object)
*