Refactor and clean up VSyncWorker lifetime and thread interaction
Refactor interactions between HwcDisplay and VSyncWorker such that VSyncWorker no longer needs to acquire the main lock.
Doing this allows for cleaning up the interaction and ownership model between HwcDisplay and VSyncWorker. Specifically, the VSyncWorker thread can be join
ed in the destructor, allowing for the removal of a hack to work around the complications of the vsync thread holding the main lock during deinit.
This refactoring also reduces the number of threads that might interact with a particular HwcDisplay instance's private members, which will simplify future reworking to support threaded present.