Prevent cross-EP Cast fusion in RemoveDuplicateCastTransformer (#27363)
### Description
Fixes an incorrect Cast deduplication across execution provider
boundaries.
Today, `Cast(int64->float, CPU) -> Cast(float->float16, WebGPU)` can be
fused into `Cast(int64->float16, WebGPU)`, which is invalid for WebGPU
and can fail kernel lookup.
This change adds an EP check so Cast fusion only happens when both nodes
are on the same EP, and adds a regression test for this scenario.
### Motivation and Context
Fixes #27291