Fix double deletion

Small regression from commit 7ae796cb141b73a1b215b2b0fd64b7ffbbd1e510.
Processing the deletables might result in the onDestruction emission, which in
turn may end up in GC allocation and thus GC runs. That in turn may result
in m_deletables processing, which at this point is nested then. For that to
work we need to set m_deletables back to zero _before_ beginning with the
iteration.

Fixes tst_qqmlecmascript with aggressive gc.

Change-Id: Ibb310b30cd496644557f4c1bb23318b18ee8f36c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Fix interpreter math routines.

This:
    qint64 result = a + b;
is not equal to:
    qint64 result = static_cast<qint64>(a) + b;

So checking if the former will overflow, and then doing the "double
case", will get thrown out by an optimizing compiler.

While we're in the area, optimize the X86 case a bit too.

Change-Id: Idfb69b16dbaaa0ae9f013a430ff060ca789526ba
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>