Introduced a boolean flag to GcLock to control defer execution
Removed unused RCU source files from directory tree
Merge branch 'master' into gclock-defer-write
Replaced rcu_dereference_sym call by plain std::atomic.
rcu_dereference_sym basically calls CMM_ACCESS_ONCE which essentially is the same macro as the ACCESS_ONCE kernel one.
This macro ensures that the compiler won't make any optimization and won't load the given value twice. std::atomic should
do the trick here.
Implemented speculative Gc. The speculative unlock version does not guarantee that once it's done, the Gc is unlocked.
Merge branch 'master' into gclock-speculative-experiment
Refactored TLS stuff
Merge branch 'master' into gclock-speculative-experiment
Merge branch 'master' into gclock-speculative-experiment

Conflicts:
	gc/gc_lock.h
The gc lock TLS destructor now properly releases any held speculative locks.
Added documentation
Allowing to control deferred execution on a speculative critical section
Improved the documentation for GCLock and speculative lock.
Added a note related to SpeculativeGuard.
Merge branch 'gclock-speculative-experiment'
Resetting counter after unlocking Gc when a thread dies
Merge branch 'master' into gclock-speculative-experiment
GcLock should now assert if the speculative lock is still held after
the thread dies.
Merge branch 'gclock-speculative-experiment'
Merge branch 'master' of github.com:datacratic/soa