Fix update installer test on Windows

 * Remove the dependency on Cygwin being installed along with zip.exe
   at a specific location.

   Add a small cross-platform tool in zip.cpp which creates a zip
   file using the contents of a given directory.

   This also removes the need for passing different arguments to 'zip'
   depending on the platform.

 * Fix StringUtils::endsWith()

 * Fix UpdateDialogWin32::quit(), when called on a background thread it
   had no effect. Post the WM_QUIT message to the main thread.