Allows iterators to iterate inherited properties from prototype.

Fixes #487.

This change is a hack to basically iterate up the prototype chain until we hit an internal prototype, like Object/String/Array/etc. This passes all tests and meets the common usecase of iterating property methods without adding more keys into the mix. This will tide over until #591 is fixed.
I completely forgot that you filed a patch for this! Yours approach works well, I'll refactor this.