Fix unset in parent not propagating to child when variable set in grandparent (shell)

Sorry, @jarib, I only realized that my full change in https://github.com/jarib/childprocess/pull/82 was needed on the drive home and by the time I got back on, you had already merged the short fix.  Your short fix, fixes the problem where the `CHILDPROCESS_UNSET=1` in the grandparent (shell), `ENV['CHILDPROCESS_UNSET'] = 1` in the parent (rspec), and `process.environment['CHILDPROCESS_UNSET'] = nil` for the child, but what I didn't realize, is that it doesn't fix the case of the parent unsetting the variable in `ENV` instead of in `process.environent`, which is the actual use case that needs to be fixed for cucumber aruba where it sets ENV['foo'] = nil when you do `set_env('foo', nil)` and it doesn't actually change process.environment at all.

# Verification Steps

## Bug Steps
- [ ] `git checkout 4df2d98`
- [ ] `rvm use jruby@childprocess` (or however your switch between rubies to use jruby`
- [ ] `CHILDPROCESS_UNSET=1 rspec --format documentation spec/childprocess_spec.rb:127`
- [ ] VERIFY failure: 
![screen shot 2014-09-30 at 6 30 39 pm](https://cloud.githubusercontent.com/assets/2230482/4468190/d3eca990-48f9-11e4-8ed1-373d2a31b5c3.png)

## Fix steps
- [ ] `git checkout 0750923`
- [ ] `rvm use jruby@childprocess` (or however your switch between rubies to use jruby`
- [ ] `CHILDPROCESS_UNSET=1 rake spec`
- [ ] VERIFY no failures

Convert keys to strings early so that multiple paths in the `each` calls don't need to call `to_s` more than once.