@davidchambers
Just stacking more on the "we should punt `_.keys` for this PR":

While your PR is partially addressing the `arguments` object issue it will miss it when an environment doesn't have the `[object Arguments]` classification, something `_.isArguments` handles. It will also miss keys like `input` and `index` from arrays created by `RegExp#exec` (e.g.`_.keys(/./.exec('a'))`), will miss string objects in IE8 (e.g. `_.keys(Object('a'))`), as well as the `[[DontEnum]]` issues of IE < 9 (e.g. `_.keys({ 'constructor': _.noop })`).