yield to blocks that are passed to the cache layer and
respect the block for caching instead of using own path, this
makes the user responsible to serializing the correct object
in the data-store

also do not store any nil object that is returned and by default
don't store any "empty" object, if the user wants to store "empty"
objects they can pass :allow_empty => true to the options'
bump to 0.0.5