refactor of CAnnouncementManager

This refactors CAnnouncementManager from a global static class into a singleton. Furthermore the second commit contains a fix for a crash on shutdown which I've seen on win32 and has been introduced by 198c45e465e113bd170ec8c5f47770c4fefb88d9. Last but not least I've noticed that we send a Playlist.OnClear announcement even if the cleared playlist is already empty which doesn't make much sense. This is fixed by the third commit.