Avoid eager copying with BytesBuilder (#186)

The previous implementation of `collectBytes` would return a `Uint8List`
where the `lengthInBytes` and `buffer.lengthInBytes` matched. This
property isn't an intended guarantee, however since some callers may
rely on it for correct behavior it is safer to retain it. Use `copy: false`
so that the buffer used in `takeBytes` has the same length as the data.
diff --git a/lib/src/byte_collector.dart b/lib/src/byte_collector.dart
index a7a5435..0c93761 100644
--- a/lib/src/byte_collector.dart
+++ b/lib/src/byte_collector.dart
@@ -42,7 +42,7 @@
 /// so it can cancel the operation.
 T _collectBytes<T>(Stream<List<int>> source,
     T Function(StreamSubscription<List<int>>, Future<Uint8List>) result) {
-  var bytes = BytesBuilder();
+  var bytes = BytesBuilder(copy: false);
   var completer = Completer<Uint8List>.sync();
   var subscription =
       source.listen(bytes.add, onError: completer.completeError, onDone: () {