Add Object::hasOwnProperty()

This allows us to remove more getOwnProperty calls. This will
be required later on to extend our array handling.

Change-Id: I7b7f5887990cd443accf51891644fdfbb849cf35
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Fixes for argument objects

Fix a possible infinite recursion, and a corner
case where we wouldn't set the correct data when
writing to the argument object

Change-Id: Ia64b9f62e9b881e24d74e23d96d5eb27805a126f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Rework array handling for JS objects

Split up ArrayData into two classes, one for regular
arrays, one for sparse arrays and cleanly separate
the two cases. Only create array data on demand.

Change-Id: I9ca8d0b53592174f213ba0f20caf93e77dba690a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Smaller code cleanup

Move the check for isEmpty() into ArrayData::getProperty.

Change-Id: I1791ced706afadbb2f45883cb1b3915f40500b71
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Cleanup: change signature of Object::insertMember()

Methods returning a Property pointer have to be removed, so that
we can move over to store member data requiring only one value for
the common case of data properties.

This will in the long term reduce memory consumption on 64 bit
systems quite a bit.

Change-Id: I78de3794ec7b3bc5db13aa57275d3f08fa9d470a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>