Corrected behavior of the FunctionCall class

When new handlers are added after the result was already returned from the
remote end, we still invoke them with this cached result. This allows to
rule out racing condition between execution of the remote call and setting
of the callback.
Fixed conversion of exceptions.
Clean up ActiveCalls after call was completed