Potential fix for ReadWriteMutex inconsistency in #75
Fixes #75. The methods void ReadWriteSpinLock::LockForRead() and void ReadWriteSpinLock::LockForWrite() were simply no-ops. The proper Try method implementations were too buggy to be useful. I refactored the whole class to use a spinlock to serialize access to the counter. I feel like this is suboptimal, but the algorithm is simple, the new size is larger but only 64 and it still managed to synchronize 30,000 threads in 0.93 seconds which is not quite but approaches the speed of the no-op on this system (4.7ghz 8350 8x core).