pw_hdlc_lite: Break dependencies apart

Separate encoder and decoder dependencies to allow projects to import
one without the other, but keep them as the core of `pw_hdlc_lite`.
This fixes a circular dependency when encoding tokenized logs for
HDLC-Lite RPCs, since `pw_hdlc_lite:decoder` depends on logging, and
tokenized logging only needs `pw_hdlc_lite:encoder`.

Change-Id: Id94821cb3e12c9b772b45ea17e640d833a6732ed
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/19145
Commit-Queue: Carlos Chinchilla <cachinchilla@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
diff --git a/pw_hdlc_lite/BUILD.gn b/pw_hdlc_lite/BUILD.gn
index 1d88ed7..9a13e82 100644
--- a/pw_hdlc_lite/BUILD.gn
+++ b/pw_hdlc_lite/BUILD.gn
@@ -22,24 +22,24 @@
   include_dirs = [ "public" ]
 }
 
-pw_source_set("pw_hdlc_lite") {
-  public_configs = [ ":default_config" ]
-  public = [
-    "public/pw_hdlc_lite/decoder.h",
-    "public/pw_hdlc_lite/encoder.h",
-    "public/pw_hdlc_lite/sys_io_stream.h",
+group("pw_hdlc_lite") {
+  public_deps = [
+    ":decoder",
+    ":encoder",
   ]
+}
+
+pw_source_set("decoder") {
+  public_configs = [ ":default_config" ]
+  public = [ "public/pw_hdlc_lite/decoder.h" ]
   sources = [
     "decoder.cc",
-    "encoder.cc",
     "pw_hdlc_lite_private/protocol.h",
   ]
   public_deps = [
     dir_pw_bytes,
     dir_pw_result,
     dir_pw_status,
-    dir_pw_stream,
-    dir_pw_sys_io,
   ]
   deps = [
     dir_pw_checksum,
@@ -48,6 +48,26 @@
   friend = [ ":*" ]
 }
 
+pw_source_set("encoder") {
+  public_configs = [ ":default_config" ]
+  public = [
+    "public/pw_hdlc_lite/encoder.h",
+    "public/pw_hdlc_lite/sys_io_stream.h",
+  ]
+  sources = [
+    "encoder.cc",
+    "pw_hdlc_lite_private/protocol.h",
+  ]
+  public_deps = [
+    dir_pw_bytes,
+    dir_pw_status,
+    dir_pw_stream,
+    dir_pw_sys_io,
+  ]
+  deps = [ dir_pw_checksum ]
+  friend = [ ":*" ]
+}
+
 pw_source_set("pw_rpc") {
   public_configs = [ ":default_config" ]
   public = [