Implement QObject Signal <> JS Slot connections using QSlotObjectBase

This eliminates the need for any extra bookkeeping.

This change relies on https://codereview.qt-project.org/#change,58112 in qtbase.

Change-Id: I873b77da342b5f7cbb862f13b53582ffd363e2c8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Remove signal & slot related code from QV8QObjectWrapper

The code isn't needed anymore. Also moved ExtractQtSignal/QtMethod
out, too.

Change-Id: I8d7a0ef89ad5ea1ca102a416b70e27597c0279b7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Get rid of QV8QObjectWrapper::getProperty

Replace the call sites with calls to getQmlProperty on the QObjectWrapper.

Change-Id: I3dbc3788c8d1631d817f65c738f0a8a31deb2866
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Get rid of QV8QObjectWrapper::GetProperty

Fold it completely into QV4::QObjectWrapper::getQmlProperty

Change-Id: I95093ce0b3d56a3a0b641f57ce2232bb5d4f0091
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simplify QObjectWrapper calls from within other type wrappers

... with the help of a getQmlProperty static function.

Change-Id: Ia823ba9ac995cb1a0591081bf18418f48d60e04d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Get rid of QV8QObjectWrapper:setProperty and SetProperty

Fold it all into QV4::QObjectWrapper::setQmlProperty and remove
a lot of otherwise unused code.

Change-Id: Ic28233fa7d4df898ff39ac065044319e01d47b88
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Get rid of QV8QObjectWrapper

Change-Id: I3205a85cb9163d7b51cc58ba17f9056a2d50451c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Remove last traces of v8:: API from QObject bindings

Change-Id: I41ed89c6a21dba67ad28f201e8f444bbcb039142
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Move QV4::QObjectWrapper into the v4/ subdirectory

Change-Id: I1c5b3e343e259adbf2f1ff3fa7b2ff225eb9b192
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix tst_qqmlecmascript::signalArguments

Don't check for arguments.callee, which is only available in non-strict
mode

Change-Id: I90851862e36e5bc7c518198f9fe5672178a3ec58
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Remove unused code from QV8Engine

Change-Id: Idb327cc50f0058e67f5c91d6ca35191b9ae64320
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix tst_qqmlecmascript::signalEmitted

This test executes code in the Component.onDestruction signal handler that ends
up doing things like allocating new V4 objects on the GC heap. Since Component.onDestruction
is called (indirectly) from QV4::QObjectWrapper::~QObjectWrapper(), we have a slight
problem:

From within the destructor of a garbage collected object, _during_ a sweep, we
end up trying to allocate new managed objects. Instead of adding more
complexity to the memory manager, this patch avoids doing clever things in the
destructor, by delaying the emission of the destructed signal to the point
right before the real deletion of the QObject (which was already delayed with a
deleteLater).

Change-Id: I15d5ad36feee930745e1a3a0efb5be9a302426d3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix tst_qqmlecmascript::scriptErrors()

* In the context wrapper, throw a real JS exception that when serialized
  to a string includes the "Error:" prefix (due to the error object's name)
* Added column information to one of the expected error messages

Change-Id: I4c1bc749f01425efb0a27121f7f1b8cf4946d644
Reviewed-by: Lars Knoll <lars.knoll@digia.com>