MemcpyFromHost and MemcpyToHost support for plugin EPs (#26088)
### Description
<!-- Describe your changes. -->
Add support for `MemcpyFromHost` and `MemcpyToHost` ops with plugin EPs.
- Add CPU EP fallback kernels for the memcpy ops. These are generic
implementations using a data transfer manager.
- Update `SessionState::PopulateKernelCreateInfo()` to fall back to CPU
memcpy kernels if a node's assigned provider doesn't have them.
- Update `MemcpyTransformer` to determine whether providers are
CPU-based or compatible with other providers by looking at the device
type instead of matching against a hardcoded list of provider types.
This accommodates plugin EPs, where the provider type can't be
hardcoded.
### 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. -->
Allow plugin EPs to work with models where memcpy ops are required
(i.e., models where connected nodes are not fully assigned to the plugin
EP).