Add basic windows support
Fixes #342
I know I should wait for a discussion before opening a PR, but I had to implement this regardless due to having to support windows developers in our project. So I thought I could add the PR here as well until you have time to think about it, but ofc no pressure to merge, it is merely opened as a suggestion for how this could be implemented if you are open to the feature, I'm also happy to take feedback if you would like it to be implemented differently somehow.
This adds basic support for windows, it excludes all Unix socket features (e.g transfer_fd), it excludes daemonization (the library used in unix-only).
For all uses of std::os::unix::io::RawFd on unix systems, windows use std::os::windows::io::RawSocket.
For the libc calls getpeername and getsockname that on unix systems uses the implementation in the nix-crate, windows uses a implementation that is based on similar functionality in the std lib (but that unfortunately is private)
I've been testing this with the x86_64-pc-windows-gnu target, but I have not been able to cross compile pingora-boringssl to windows. Not sure if it important to test for windows, so didnt spend very much time on it as it is likely just a problem with my local developement environment.