Rework --enable_generic_interface and add tests (#24552)
### Description
- Introduces `USE_<EP>_PROVIDER_INTERFACE` pre-processor macros that
indicate when an EP interface is enabled but the full EP is not being
compiled.
- Previously, the CMake configuration turned on `USE_<EP>` for both use
cases. This prevented tests from determining whether the full EP or only
the interface was available, which caused test failures. It also turned
on all EP code paths in core ORT code at the same time, which caused
compilation and logic errors.
- Adds the new NV EP to list of EPs whose interface is enabled with ORT
is built with `--enable_generic_interface`
- Updates the Windows Arm64 QNN CI Pipeline to actually use the
`--enable_generic_interface` flag.
- Previously, It was not actually being passed to the build command, so
no unit tests were being run with the flag enabled.
- Adds unit tests to check that adding an EP to the session options
fails when only the generic interface (but not the full EP) is built.
#### CI Pipelines that use --enable_generic_interface
- Windows ARM64 QNN CI Pipeline:
- Builds ORT with `--use_qnn --enable_generic_interface` and runs all
normal QNN EP unit tests.
- Builds ORT with `--use_qnn --enable_generic_interface` and runs new
unit tests that try to add the following EPs to the session options
(expect failure): OpenVINO, CUDA, NV, TensorRT, VitisAI
- Build and Test OpenVINO EP (AlamLinux8, Py3.12) / build_test_pipeline:
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
all normal OpenVINO EP unit tests.
- Builds ORT with `--use_openvino --enable_generic_interface` and runs
new unit tests that try to add the following EPs to the session options
(expect failure): QNN, CUDA, NV, TensorRT, VitisAI
- windows_x64_release_ep_generic_interface
- Builds ORT with `--enable_generic_interface` and now runs CPU EP unit
tests (didn't previously).
### Motivation and Context
Fix use of `--enable_generic_interface` and make sure tests actually
run.