Add missing YARD docs for Memoizable::Memory#initialize
Refactor Memoizable::Memory#[]= to be thread-safe

* The previous code had a race condition between testing for the
  existence of the key and setting the value in the hash. This
  change uses ThreadSafe::Cache#compute_if_absent to atomically
  set the value only if it is not already set.

  The use of the local variable to track the state is a bit nasty,
  but I could not see any other way to do this using the
  ThreadSafe::Cache interface.
Refactor Memoizable::Memory#fetch to use existing cache api