Fix UUID handling in Rust Thrift compact protocol (#3179)

This commit fixes two bugs in the Rust Thrift implementation that prevented
UUID fields from working correctly with the compact protocol:

1. Missing UUID case in skip_till_depth function
   - The skip function in lib/rs/src/protocol/mod.rs did not handle TType::Uuid
   - This caused "cannot skip field type Uuid" errors when trying to skip UUID fields
   - Fixed by adding: TType::Uuid => self.read_uuid().map(|_| ())

2. Incorrect UUID serialization in compact protocol
   - The compact protocol was using read_bytes()/write_bytes() for UUIDs
   - These methods include a length prefix, but UUIDs should be transmitted as
     raw 16-byte values per the Thrift specification
   - This caused "don't know what type: 15" errors during cross-language tests
   - Fixed by reading/writing UUID bytes directly without length prefix
   - Implementation now matches the binary protocol's approach for consistency

The bug manifested as failures in cross-language tests between Go and Rust
when using compact protocol. The error occurred because Go correctly expected
raw 16-byte UUID values while Rust was incorrectly adding a length prefix.

Testing:
- Verified all go-rs and rs-go cross tests now pass with compact protocol
- Tests confirm UUID values are correctly serialized and deserialized
- Both buffered and framed transports work correctly
diff --git a/lib/rs/src/protocol/mod.rs b/lib/rs/src/protocol/mod.rs
index 573978a..0fbf509 100644
--- a/lib/rs/src/protocol/mod.rs
+++ b/lib/rs/src/protocol/mod.rs
@@ -209,6 +209,7 @@
             TType::I64 => self.read_i64().map(|_| ()),
             TType::Double => self.read_double().map(|_| ()),
             TType::String => self.read_string().map(|_| ()),
+            TType::Uuid => self.read_uuid().map(|_| ()),
             TType::Struct => {
                 self.read_struct_begin()?;
                 loop {