Copies a C string into Dart and frees the original.
String readString(ffi.Pointer<ffi.Char> p) { final s = p.cast<Utf8>().toDartString(); stringFree(p); return s; }