pw_rpc: Method union class

This adds a MethodUnion class which can store one of multiple
method types, and updates the base Service class to store them instead
of concrete Methods. A MethodUnion class for raw methods and for
nanopb/raw methods is added to the respective submodules. Also, the
nanopb codegen API and script are updated to deduce a method type from
an implementation's signature, and create the invoker automatically.

This does not update the TestMethodContext class to work with the new
changes; tests depending on it are temporarily disabled until fixed.

Change-Id: I982662fb2b022323c8df293bf34d5fca9a8d91c0
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/21242
Reviewed-by: Wyatt Hepler <hepler@google.com>
diff --git a/pw_rpc/BUILD.gn b/pw_rpc/BUILD.gn
index 8c67797..26a0042 100644
--- a/pw_rpc/BUILD.gn
+++ b/pw_rpc/BUILD.gn
@@ -41,6 +41,7 @@
     "public/pw_rpc/internal/call.h",
     "public/pw_rpc/internal/hash.h",
     "public/pw_rpc/internal/method.h",
+    "public/pw_rpc/internal/method_union.h",
     "public/pw_rpc/internal/server.h",
     "server.cc",
     "service.cc",