What's next for CxxProfiler

While CxxProfiler is pretty functional already now, there are few improvements I've been working on.

Main change would be using ETW API for sampling call-stacks. It would allow much higher frequency and lower overhead than current mechanism. On Windows 10 it allows to sample stack every 0.122 ms (1/8192). I still want to keep current sampling mechanism (basically a debugger) because it can be useful in various situations - for example, if you need to run profiler it as non-admin user. So to do all this I'm refactoring non-UI code, so I can have two backends in code. I'm cleaning up backend code (original one was written ~9 years ago) and making it more handmade-like, that means controlling memory allocations, and not relying on Qt. At the same time I'm separating common functionality for two backends - symbol lookup, string caching, communication with UI process. Now debugger backend looks pretty nice and clean (check out backend_debugger.c file). Profiler will now launch backend in separate process and communicate data back to UI process over pipe. I decided running backend into separate process because ETW will require admin rights, but UI process doesn't need to be running with admin privileges. Also it provides a bit of safety, in case backend will crash, the UI will be still alive and will be able to display partially received data.