Some cases were found, mainly when white-box testing, where the
SignalCallData object was being terminated twice. A state flag has
been added to the class to ensure that a CallData object is only
terminated once. This is related to quick hangup scenarios, where
the CallData object is copied to a deferred hangup list and later
terminated after the RingRTC system is done with its operations.
The CallService.terminate() function itself was also arranged so that
the 'current' CallData object is nil'd out before it is actually
terminated, in case the RingRTC close process, which is on another
thread, takes a long time, and something else comes and tries to
see if there is current call.