Test all the Update Things

Testing various scenario inside my demo app:

Done:

 - when the current version is the same as the latest version, no updates should be found
 - `.MaxBy` assumes it has at least one element - handle that
 - "local version is greater than remote version" now is only handled for greater than (not greater than or equal to)
 - Ionic.Zip has to ship with Shimmer.Core for applying updates to work
 - Shimmer.Client doesn't need to reference Ionic.Zip
 - some more logging around when directories are deleted unsuccessfully

Test Plan:

 - [x] multiple updates without a restart should work
 - [x] after one or more updates only one entry should exist in **Programs and Features**
 - [x] uninstalling an updated app should remove the latest version (or mark them all for deletion)  

Open Questions:

 -  ~~I have a demo app [here](https://github.com/shiftkey/TestApp) - should it be included under this repository or just renamed to something clearer (Shimmer.Demo for example)?~~ I'll rename it to something more descriptive and push it to it's own repo.