Replacing Microsoft.Windows.Shell with our own internal implementation

Resolves #580 

TODO:

 - [x] test these changes work
 - [x] update NuGet package to drop dependency
 - [ ] ~~update details on site to indicate we've consumed it~~


**Note:** Task 3 moved to the 0.11 "done" criteria #322