Fixed exception handling for TerminateExecution()

Added IsExecutionTerminating().  Fixed null message in the exception
thrown after TerminateExecution() is called.  Handle terminated
execution properly when there is C# code intervening on the stack.
Normalised exception handling code to return the return value of
v8::ThrowException(), as it should.