[FIX] Make sure all XPC messages receive a response before returning with a result

- Use dispatch_group to add jobs for outgoing requests and only complete group and
  return the result, once all responses have been received.
- Use serial queue to lock access to the NSPipes