NativeError: Error.prototype.name and Error.prototype.message are not enumerable

test cases:
- ch15/15.11/15.11.4/15.11.4.2/15.11.4.2-1
- ch15/15.11/15.11.4/15.11.4.3/15.11.4.3-1
NativeError: 15.11.2.1 and 15.11.4.4 updates

- handle `undefined` value for message in constructor
- follow spec for 15.11.4.4  Error.prototype.toString more closely

test cases:
- ch15/15.11/15.11.4/15.11.4.4/*
Arguments: arguments object should not have its own 'constructor' property, instead it inherits 'constructor' through its prototype

test:
`(function(){ return arguments.hasOwnProperty('constructor') })() === false`
Arguments: 'callee', 'caller' and 'length' properties can be redefined for the arguments object
BaseFunction: Function.prototype.toString arity is 0

test case:
- ch15/15.3/15.3.4/15.3.4.2/S15.3.4.2_A11
BaseFunction: The 'prototype' property on function instances can be redefined
BaseFunction: The 'arguments' property can be redefined for function instances
NativeArray: Check [[Extensible]] flag for dense-array case in [[Put]]
NativeArray: Remove (invalid) round-trips to ScriptRuntime when getting/setting elements

ScriptRuntime#getObjectProp() reports undefined property warnings when the strict-mode feature is enabled.
NativeArray: Follow spec more closely for Array.isArray and Array.prototype.concat
NativeArray: Array.prototype.{indexOf, lastIndexOf} bug fixes

- removed indexOfHelper method, indexOf and lastIndexOf now use seperate methods since the amount of shared lines was negliglible to justify the added non-uniformness compared to the other js_* methods
- 15.4.4.14  Array.prototype.indexOf uses [[Get]], therefore add search for prototype values in the dense-array case
- 15.4.4.15  Array.prototype.lastIndexOf uses [[Get]], therefore add search for prototype values in the dense-array case
NativeArray: Array.prototype.sort bug fixes (bug 728286)

- follow spec for 15.4.4.11  Array.prototype.sort more closely w.r.t undefined and not-defined properties
NativeArray: Multiple changes to ensure specification algorithms are followed more closely

- defineElem: helper method just like setElem(), but uses [[DefineOwnProperty]] instead of [[Put]]
- shift/pop: explicitely call deleteElem() because `thisObject` may not be an Array instance
- unshift: always call setLengthProperty() to ensure update to 'length' property b/c it may be implicitely updated due to call to ToUint32 in step 3 of 15.4.4.13  Array.prototype.unshift
- splice: add missing calls to [[Delete]], see step 12.d of 15.4.4.12  Array.prototype.splice
- concat: 15.4.4.4  Array.prototype.concat uses [[DefineOwnProperty]] instead of [[Put]]
- slice: handle case when first argument is `undefined`
- slice: 15.4.4.10  Array.prototype.slice uses [[DefineOwnProperty]] instead of [[Put]]
- filter/map: 'filter' and 'map' use [[DefineOwnProperty]] instead of [[Put]]
NativeArray: address review comment from hns
NativeNumber: Handle case when precision is Infinity for Number.prototype.{toFixed,toExponential,toPrecision}
NativeObject: Object.prototype.toLocaleString uses [[Get]] to retrieve 'toString' property
NativeObject: Handle undefined arguments in Object.prototype.{hasOwnProperty,propertyIsEnumerable}
NativeString: String.prototype.replace arity is 2 instead of 1
NativeString: Handle undefined arguments in String.prototype.slice
ScriptRuntime: Fix range check to follow spec in numberToString()