Allow a block to be passed to fetch

Matching the implementation on `Hash`, a block can be passed that will
be evaluated if the nil is returned:

    fetch(:user) { fail 'user is nil }