Make the guarantee of deliverVoidReplies stronger

Make the guarantee of deliverVoidReplies stronger, i.e. after the method
returns, the response queue _will_ start with a response with the given
sequence number. The previous guarantee is too weak because not all the
stale responses have been cleared, therefore requires the method be
called multiple times in order to reach the response to be delivered
with reply/error.

The stronger guarantee implies that the method has to block and wait for
the given sequence number. This fixes the bug where we assume the next
response after the method returns is the one we want to deliver, but is
actually a stale response.

The change also implies that the method should only be called when we
expect the response with given sequence number to be present, which does
not hold for calls from events. The response could have already been
delivered, causing us to wait forever. A separate method is used to
clear stale responses which are _already_ in queue, not what might be
arriving.