update _.keys to treat sparse array-likes as dense

I removed this change from #1525 before it was merged. For consistency, _.keys should treat sparse arrays as dense (as _.map et al. now do).

I'm sure you'll have much to say about this change, @jdalton. I look forward to your feedback. :)

Why are we using `(nativeKeys || shimKeys)(obj)` here but not on line 801?