[perf] “keys” or “hasOwnProperty” in for in loops

adds a iterateObject helper in ember-metal/utils to help with for/in loop optimizations we usually do.
Normalizes many of the for in calls we have
to use Object.keys(or a polyfill) to loop
through the object instead of for in (which
is slower). Also handles cases where
hasOwnProperty could get called on an object
with a null prototype.

fixes github #5607
it is important that we drive these changes from profiles/benchmarks or it is super easy for us to self troll.

i have been using https://github.com/stefanpenner/perf-stress to find issues an then fix them, rather then speculatively improving things.

@twokul introduced a data faking library that is introducing much overhead, hopefully he fixes this soon. Otherwise just checkout `1af32a6e92de64123872812e2dce56e323d812a0` instead and use that.

Add scenarios that suck and find perf issues and fix them. Ideally documenting what you found and what u did.