PROTON-2554 Fix composite buffer read string APIs position updates

The API indicates the read string methods should advance the position to
the limit but the composite is not doing that.
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
index cd6f673..325f8a0 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/CompositeReadableBuffer.java
@@ -561,6 +561,9 @@
             decoded = readStringFromComponents(decoder);
         }
 
+        // Ensure that all currently readable bytes are consumed.
+        position(limit);
+
         return decoded.toString();
     }
 
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java b/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
index a9d5c73..e4d4a91 100644
--- a/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
+++ b/proton-j/src/test/java/org/apache/qpid/proton/codec/CompositeReadableBufferTest.java
@@ -3283,6 +3283,7 @@
         CompositeReadableBuffer buffer = new CompositeReadableBuffer();
 
         assertEquals("", buffer.readString(StandardCharsets.UTF_8.newDecoder()));
+        assertFalse(buffer.hasRemaining());
     }
 
     @Test
@@ -3295,6 +3296,7 @@
         buffer.append(encoded);
 
         assertEquals(testString, buffer.readString(StandardCharsets.UTF_8.newDecoder()));
+        assertFalse(buffer.hasRemaining());
     }
 
     @Test
@@ -3309,6 +3311,7 @@
         buffer.limit(1);
 
         assertEquals("T", buffer.readString(StandardCharsets.UTF_8.newDecoder()));
+        assertFalse(buffer.hasRemaining());
     }
 
     @Test
@@ -3329,6 +3332,7 @@
         String result = buffer.readString(StandardCharsets.UTF_8.newDecoder());
 
         assertEquals(testString, result);
+        assertFalse(buffer.hasRemaining());
     }
 
     @Test
@@ -3350,6 +3354,7 @@
         buffer.limit(1);
 
         assertEquals("T", buffer.readString(StandardCharsets.UTF_8.newDecoder()));
+        assertFalse(buffer.hasRemaining());
     }
 
     @Test
@@ -3370,6 +3375,7 @@
         String result = composite.readUTF8();
 
         assertEquals("Failed to round trip String correctly: ", expected, result);
+        assertFalse(composite.hasRemaining());
     }
 
     @Test
@@ -3394,6 +3400,7 @@
         String result = composite.readUTF8();
 
         assertEquals("Failed to round trip String correctly: ", expected, result);
+        assertFalse(composite.hasRemaining());
     }
 
     @Test
@@ -3420,6 +3427,7 @@
         String result = composite.readUTF8();
 
         assertEquals("Failed to round trip String correctly: ", expected, result);
+        assertFalse(composite.hasRemaining());
     }
 
     @Test
@@ -3441,6 +3449,7 @@
         String result = slicedComposite.readUTF8();
 
         assertEquals("Failed to round trip String correctly: ", expected, result);
+        assertFalse(slicedComposite.hasRemaining());
     }
 
     @Test