CWinEvents refactor and allow CWinEvents to observe Peripherals changes

@opdenkamp, here we go...

Changes got a bit out of context for https://github.com/xbmc/xbmc/pull/3291 :)