windows: refactor, and implementation of desktop enumerating
moved many functions into details namespace and implemented icon() on Windows