core: INPC locking on private object not public type
core: INPC removed caching :)

1. Caching introduces multithreading issues
2. People say there is no heap fragmentation to fear in this case
win: refactoring to MVVM style

Category change events implemented as ICommand
win: no need to change to current category