Fix a bad bug where the script stack was not being left in the correct state after posting a key down event.

This commit also replace to if statements with asserts.
Fix a bug where a value was not being popped from the script stack and also use asserts in place of if statements.
Fix a bad bug where deleting an element during a Watch* event handler would break the event handler iteration.