Make Utils.js use Object.define to modify Array

Previously, we were modifying Array's prototype using
simple assignment.  This can mess with enumeration/iteration.
Thus, we now use Object.defineProperty with enumerable set to
false.

See #366
Merge pull request #397 from kanaka/refactor/use-object-defineproperty

Make Utils.js use Object.define to modify Array