[roll third_party/pigweed] pw_rpc: Handle replacing a call with an acquired ChannelOutput buffer

- When a pending RPC is called again, move its ChannelOutput buffer to
  the new call object. Previously, the ChannelOutput buffer was left
  active in the original call, which caused crashes.

  Moving the ChannelOutput buffer rather than closing it prevents code
  working with the original call object in another thread from sending a
  stale buffer if the call object is replaced. This is an incomplete
  solution, though, and more thought is needed. If the RPC body uses the
  OutputBuffer before passing it off to the other thread, that thread
  will use a stale buffer reference.
- Rearrange the code that replaces the old call to avoid unlocking and
  relocking, which could cause problems if another call arrived while
  the lock wasn't held.
- Expand tests to cover replacing a call with a ChannelOutput buffer
  acquired.

Original-Bug: 591
Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/76920

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 4b7b09e44f828a2..a06939d49ff44aa
Roller-URL: https://ci.chromium.org/b/8825754017344329249
Cq-Cl-Tag: roller-builder:pigweed-experimental-roller
Cq-Cl-Tag: roller-bid:8825754017344329249
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I5ae3bbc195db2b0ccd015f667589eb76e71a2a89
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/77160
Bot-Commit: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com>
Commit-Queue: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/third_party/pigweed b/third_party/pigweed
index 4b7b09e..a06939d 160000
--- a/third_party/pigweed
+++ b/third_party/pigweed
@@ -1 +1 @@
-Subproject commit 4b7b09e44f828a2a6b105960835b6439fcfaf829
+Subproject commit a06939d49ff44aa14fd5cb907dfe9d09963262e3