Fix CoreML EP issue with external weight path handling. (#28062)
### Description
<!-- Describe your changes. -->
GitHub issue #28005: CoreML EP crashes with SIGBUS when loading a model
with external data via CreateSession from a file path.
Root Cause
In tensorprotoutils.cc:362, TensorProtoWithExternalDataToTensorProto()
passes model_path directly to ReadExternalDataForTensor(), but
ReadExternalDataForTensor() expects a directory (it joins the path with
the external data filename). This causes path construction like
/path/to/model.onnx/model.onnx_data instead of /path/to/model.onnx_data.
The CPU EP's UnpackInitializerData() at line ~2572 correctly uses
model_path.parent_path(). The CoreML EP is the only caller that passes a
full model file path (via graph_viewer_.ModelPath() in
model_builder.cc:791), triggering the bug.
Changes
Fix (tensorprotoutils.cc:364): Changed
ReadExternalDataForTensor(ten_proto, model_path, ...) to
ReadExternalDataForTensor(ten_proto, model_path.parent_path(), ...),
matching the pattern used by UnpackInitializerData().
Test (coreml_basic_test.cc:444): Added
CoreMLExecutionProviderTest.ExternalDataInitializer — creates a model
with external data, saves it to disk, and loads it from a file path with
CoreML EP to verify the fix. The test passes with the fix applied.
### Motivation and Context
<!-- - Why is this change required? What problem does it solve?
- If it fixes an open issue, please link to the issue here. -->
#28005
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>