support negative array indexes deeply in get keys

Currently in Map the behavior of the get method when negative array indexes are passed as keys differs if the negative array index is the last key or not:
Map.new(a: [b: :c]).get(:a, '-1', :b) == nil
Map.new(a: [b: :c]).get(:a, '-1').get(:b) == :c

This PR includes a change such that both cases now equal :c along with a test.
@shulmang I'm curious about the `(-key)-1` calculation. I think maybe that's working only because you have a single element array? Did you really mean `collection.size + key`?

@ahoward was there an impetus for checking keys like this versus something like `collection.fetch( key ) rescue false`? That logic would be appropriate for *most* enumerables, right?