#2 Refactored DebugOnlyFileDataStore to FileOptimisticDataStore

Implemented optimistic write data store, with an exclusive file access strategy. 
The write method compares the original data with the actual data present in the file, to detect if the file has changed since the last read.
Reads and writes have a retry policy when the file is being used by another process (retry count is exposed as a property).
NUnit tests were implemented as well.
I did not test with a local network share.