pw_rpc: Add synchronized channel output

This adds an channel output wrapper which synchronizes a ChannelOutput's
operations with a sync::Mutex, and updates the host target's system RPC server
to use it.

Change-Id: I3d2407a8c81a8f0370fd714ded850293d7030209
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/28540
Commit-Queue: Alexei Frolov <frolv@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
diff --git a/pw_rpc/BUILD.gn b/pw_rpc/BUILD.gn
index 939f074..80db934 100644
--- a/pw_rpc/BUILD.gn
+++ b/pw_rpc/BUILD.gn
@@ -103,6 +103,15 @@
   friend = [ "./*" ]
 }
 
+pw_source_set("synchronized_channel_output") {
+  public_configs = [ ":public_include_path" ]
+  public_deps = [
+    ":common",
+    "$dir_pw_sync:mutex",
+  ]
+  public = [ "public/pw_rpc/synchronized_channel_output.h" ]
+}
+
 pw_source_set("test_utils") {
   public = [
     "public/pw_rpc/internal/test_method.h",