Fix a problem in accessing something other than Hash in Array

When you access something other than Hash in Array like this:
  {:foo => [:bar, [:baz]]}.deep_fetch(:foo, 1, 0){:default_value}
it raises NoMethodError, because [:baz] doesn't have `deep_fetch`
method.

This commit fixes this problem by use loop instead of recursive
call of deep_fetch.