avoid expensive `hasOwnProperty` checks

Replace expensive calls to `hasOwnProperty` with cheaper `Object.keys`
iteration. Similar to #1453, but with a compatibility shim for IE7 and IE8 that handles DontEnum bug (#1114).

Shaves a full second off the unit tests and nearly doubles the speed of
`moment#clone()` on my machine.

For a performance comparison: http://jsperf.com/moment-clone-speedup

I think this *does* change the semantics of `moment#clone()` slightly—previously, cloning a moment would not include any weird custom properties a user may have set on a moment object. `moment().myFakeProperty = true`, for example, would not have been copied. With this change, *all* enumerable properties on a moment instance will be copied. I doubt this is a breaking change, though.