pw_rpc: Fix responding with empty buffers

The Channel::OutputBuffer::Contains() method previously did not check if
the OutputBuffer itself was empty. An empty span sent as a raw response
would appear as a span within the OutputBuffer, even though the
OutputBuffer was never allocated. Instead of allocating an OutputBuffer
for the RPC packet, the responder would attempt to encode it into the
empty OutputBuffer, which would fail.

- Update Contains() so it returns false on an empty OutputBuffer.
- Add tests for OutputBuffer::Contains() and sending an empty response.

Change-Id: I089944079655ed6c21f40c8f19c1d94b942ebdd8
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/53420
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_rpc/responder.cc b/pw_rpc/responder.cc
index 575fa3a..063934a 100644
--- a/pw_rpc/responder.cc
+++ b/pw_rpc/responder.cc
@@ -54,6 +54,7 @@
 }
 
 Responder& Responder::operator=(Responder&& other) {
+  // If this RPC was running, complete it before moving in the other RPC.
   CloseAndSendResponse(OkStatus()).IgnoreError();
 
   // Move the state variables, which may change when the other client closes.