Refactoring ensuring StartupDesktop to remain. Adding/removing/association refactoring.

The notion of the startup desktop is now more enforced, and the startup
desktop can not be deleted. Additionally adding, removing and updating
window associations has been refactored.