32 bit sapi synthDrivers send audio to NVDA for playback rather than playing directly. (#19577)
### Summary of the issue:
the 32 bit sapi synthDrivers added in pr #19432 currently play audio
directly. Although this provides good performance and works in most
scenarios, it does not allow supporting audio ducking (as the host
process does not have permission to duck audio, and if NvDA did
ititself, it would inappropriately duck the wrong thing). Also, as we
start moving to a secure add-on runtime, 3rd party synthDrivers (at
least on secure desktops) will most likely be run in an appContainer,
which unfortunately deos not allow the host process to access tha audio
device directly. thus, to work around both of these issues, the 32 bit
sapi synthDrivers should send the audio to NvDA for playback.
### Description of development approach:
Take more code from pr #19412, specifically the WavePlayer service and
proxy, the pipe creation code, and raiiUtils.
NvDA exposes a WavePlayer service, allowing an external process such as
the 32 bit sapi synthDriver processes to send audio.
### Testing strategy:
General smoke testing of sapi4 and 32 bit sapi5 synthDrivers.
### Known issues with pull request:
* the Mikropuhe sapi5 voices sound a bit scratchy / jittery like there
are buffer underruns. I may require some assistance in improving the
stability / performance here. Sapi4 truevoice seems to work fine, sapi5
espeak and in-built windows sapi5 voices also seem to be fine.