Fix default block race condition.

By the time `elsif !key?(key)` is called another thread might have
created a `key` mapping, then `!key?(key)` check would then fail
resulting in `[]` returning `nil` an incorrect `value`.

This is most likely to be triggered by a code like this:

  ThreadSafe::Cache.new {|cache, key| cache[key] = some_value}

Related: rails/rails#13961.
Add TS::Cache#fetch_or_store.

The method is going to have semantics identical to those provided by
Rails.cache#fetch.
Don't package .gitignore. Big thanks to @arvindsv.

Related: #40.
Bump version to 0.3.4.