Add KeyHelper

Rewrite key handling with KeyHelper.

- Use `String#slice!` for deletion
- Remove argument from `Array#join` with empty string
- Prefer `reduce` over `inject`