CMake: Support protobuf code gen; add pw_rpc

- Add proto.cmake and the pw_proto_library function. Like the GN
  version, this generates code for .proto files.
- Provide CMakeLists.txt for pw_protobuf, pw_rpc, and pw_hdlc_lite.
- Add a Nanopb wrapper CMakeLists.txt with a cache variable for Nanopb,
  similar to the variable for GN.

Change-Id: I15d09af8aa3575a86fc360787b117988a75f569e
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/22841
Reviewed-by: Zoltan Szatmary-Ban <szatmz@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 18d47db..1199180 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,15 +27,18 @@
 add_subdirectory(pw_containers)
 add_subdirectory(pw_cpu_exception)
 add_subdirectory(pw_cpu_exception_armv7m)
+add_subdirectory(pw_hdlc_lite)
 add_subdirectory(pw_kvs)
 add_subdirectory(pw_log)
 add_subdirectory(pw_log_basic)
 add_subdirectory(pw_log_tokenized)
 add_subdirectory(pw_minimal_cpp_stdlib)
 add_subdirectory(pw_polyfill)
+add_subdirectory(pw_protobuf)
 add_subdirectory(pw_preprocessor)
 add_subdirectory(pw_random)
 add_subdirectory(pw_result)
+add_subdirectory(pw_rpc)
 add_subdirectory(pw_span)
 add_subdirectory(pw_status)
 add_subdirectory(pw_stream)
@@ -46,3 +49,5 @@
 add_subdirectory(pw_trace)
 add_subdirectory(pw_unit_test)
 add_subdirectory(pw_varint)
+
+add_subdirectory(third_party/nanopb)