pw_hdlc: Multibyte address support

This extends the HDLC encoder and decoder in both C++ and Python to use
HDLC extended addressing, where the address field is a one-terminated
LSB varint.

Classes using HDLC, such as the HDLC ChannelOutput and WirePacketParser,
are updated accordingly.

Change-Id: I6affc4443079628567d33939d809218f7b7bdf41
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/38020
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
diff --git a/pw_hdlc/docs.rst b/pw_hdlc/docs.rst
index c8b574a..6791855 100644
--- a/pw_hdlc/docs.rst
+++ b/pw_hdlc/docs.rst
@@ -102,7 +102,7 @@
 ^^^
 .. cpp:namespace:: pw
 
-.. cpp:function:: Status hdlc::WriteUIFrame(uint8_t address, ConstByteSpan data, stream::Writer& writer)
+.. cpp:function:: Status hdlc::WriteUIFrame(uint64_t address, ConstByteSpan data, stream::Writer& writer)
 
   Writes a span of data to a :ref:`pw::stream::Writer <module-pw_stream>` and
   returns the status. This implementation uses the :ref:`module-pw_checksum`
@@ -221,9 +221,8 @@
 Roadmap
 =======
 - **Expanded protocol support** - ``pw_hdlc`` currently only supports
-  unnumbered information frames with a single address byte and control byte.
-  Support for different frame types and extended address or control fields may
-  be added in the future.
+  unnumbered information frames. Support for different frame types and
+  extended control fields may be added in the future.
 
 - **Higher performance** - We plan to improve the overall performance of the
   decoder and encoder implementations by using SIMD/NEON.