Replaces all of the manual method channel code in `camera_windows` with Pigeon.
I attempted to change the structure as little as possible, since this was already a large change. I don't particularly like the way the native result callback objects are managed (passed to `Camera` and tracked in a map), but I decided that redesigning that would be out of scope and introduced a `std::variant` to allow minimal changes to that structure. That does slightly undermine the type safety of the callbacks, but it's still strictly enforced at the level of the helpers that interact with the map.
Fixes https://github.com/flutter/flutter/issues/117905