Port ezDV FreeDV Reporter implementation to freedv-gui
~~This PR embeds the socket.io-client-cpp source tree, including all required submodules, into the freedv-gui codebase (as of commit https://github.com/socketio/socket.io-client-cpp/commit/da779141a7379cc30c870d48295033bc16a23c66). This is being done for several reasons:~~
~~1. The above commit was pushed to the socket.io-client-cpp repo seven months ago as of this writing. This plus the fact that the last official release was in 2021 raises suspicions that it is a dead project.~~ ~~2. Due to a lack of recent release, packaging FreeDV on various distros is far more challenging as many distros are reluctant to package anything newer than the most recent official release. In fact, the version of FreeDV in Debian based distros was patched to disable FreeDV Reporter support entirely precisely due to a lack of any suitable sioclient packages.~~ ~~3. Adding socket.io-client-cpp as a Git submodule adds additional complications during release due to the fact that the tarballs generated by GitHub do not include submodules. Additional manual effort would need to be done every release to provide a suitable tarball for users that wish to compile FreeDV themselves.~~ ~~4. Reimplementing socket.io support (or even using a different protocol for communicating with the FreeDV Reporter server) would be significant additional work that could be spent working on e.g. RADE or other bugfixes.~~
EDIT: I've decided to adapt some of the code used by ezDV for FreeDV Reporter instead. This required some infrastructure code (i.e. TCP socket handling) to be put into place, so the change is still pretty big (but much smaller than if individual sioclient-cpp files were included instead). I made this decision because I noticed issues with sioclient-cpp being unable to reconnect to FreeDV Reporter and didn't really want to have to dig through a possibly dead project to fix the problem.