Remove winmm support from NVDA (#17496)
Closes #16080
Closes #2067
Summary of the issue:
The support for WASAPI (and Windows' Core Audio APIs more broadly) in NVDA is now quite mature, and maintenance of our winmm support is becoming untenable.
Description of user facing changes:
The option to use WASAPI for audio output has been removed from NVDA's advanced settings. This has been on by default for some time, so it is unlikely to affect most users.
As the Mmdevice API does not have the concept of an ID to refer to the default output device, "Microsoft Sound Mapper" is no longer an option in the output device selection in Audio Settings. Users can instead choose "Default output device".
Description of development approach
Removed all references to winmm in `nvwave.py`. Rewrote the device enumeration to use the `mdevice API, via pycaw. Slightly modified the device selection logic in the settings GUI in light of Mmdevice not having an equivalent to Microsoft Sound Mapper.
Testing strategy:
System and unit tests, as well as running NVDA, and changing output devices, including plugging and unplugging headphones while NVDA was running.
Known issues with pull request:
None