libbinder_ndk: do not rely on copyability of parcelables

AParcel_readNullableParcelable accidentally relies on T's copyability
(introduced by 3b31ccac97b070fd9e20a9d1860382af5a15fd10.)

This prevents non-copyable parcelables from being used in a nullable
arrays. For example, ScopedFileDescriptor.

The following example should be valid.

  parcelable Foo {
    parcelable Bar { ParcelFileDescriptor pfd; }
    @nullable Bar[] bars;
  }

This fixes it by using std::optional<T>::emplace().

Bug: 203483658
Test: m; build NDK with the example above.
Change-Id: If95b28869feca2114922c117b7eb618af434a535
diff --git a/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h b/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h
index 67623a6..c1487c0 100644
--- a/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h
+++ b/libs/binder/ndk/include_cpp/android/binder_parcel_utils.h
@@ -560,7 +560,7 @@
             *p = std::nullopt;
             return STATUS_OK;
         }
-        *p = std::optional<first_template_type_t<P>>(first_template_type_t<P>{});
+        p->emplace(first_template_type_t<P>());
         return (*p)->readFromParcel(parcel);
     } else {
         static_assert(is_specialization_v<P, std::unique_ptr>);