Implement a more rigid is length check

Stuck in an airport today so going to get around to a couple of these things we really should get it

As discussed in https://github.com/jashkenas/underscore/issues/1590 and others. [Here's jdd's implementation for a reference](https://github.com/lodash/lodash/blob/master/lodash.js#L3646-3655), also as discussed in that thread it may make sense to check for a `splice`/`slice` function to  consider a method a true array in places like  `_.isEmpty`
Ah, I forgot that this was a spec thing as of ES6.

> The value of `Number.MAX_SAFE_INTEGER` is the largest integer n such that n and n + 1 are both exactly representable as a Number value.

Sigh. By that definition, we should revert this to what you had originally, @megawac. Sorry about that. That's a really odd definition. I'm going to try to look up the reasoning behind it.