[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

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

third_party/pigweed Rolled-Commits: 4b7b09e44f828a2..a06939d49ff44aa
Roller-URL: https://ci.chromium.org/b/8825754018614058865
Cq-Cl-Tag: roller-builder:pigweed-sample-project-roller
Cq-Cl-Tag: roller-bid:8825754018614058865
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I63ed0e320801c138c1b4acd1b195fc2034359315
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/sample_project/+/77140
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