Use an object's `@@iterator` method when spreading

Instead of converting the argument to an object and assuming it is an array-like object with numeric properties and a `length` property, `$traceurRuntime.spread` should use the object's `@@iterator` method and throw a `TypeError` when the argument is not an object.

See http://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-arrayaccumulation

Fixes #842