Change Program file to show errors like deadlock, file not exist, file already in use

 - Change some log in cache file
 - Change program to use parallel API ( Parallel.For and Parallel.Invoke )
 - Execution is now done 10 times in parallel
Fix cache, use ReaderWriterLockSlim instead of counter and simple object _lock

 - Use upgradeable lock when we read the cache, it's upgrade to writer lock if the cache doesn't exist
Merge pull request #1 from macdarwin/fix-cache

Fix cache