This patch implements:
1. A dns server that handles .et.net. zone in local and forward all other queries to system dns server.
2. A dns server instance which is a singleton in one machine, using one specific tcp port to be exclusive with each other. this instance is responsible for config system dns and run the dns server to handle dns queries.
3. A dns client instance that all easytier instance will run one, this instance will try to connect to dns server instance, and update the dns record in the dns server instance.
this pr only implements the system config for windows. linux & mac will do later.
* Support running as a Windows service.
* Optimize startup logic contro
* When running in a Windows service environment, delegate the termination of the program to the win_service_event_loop function.
* Remove the use of std::ffi::OsString at the top.
* Support service manager
* Move the service-related features to be implemented in easytier-cli.
* Add a command line option work-dir to specify the working directory
Adjust the error handling logic