libtaskmanager: expose `VirtualDesktopInfo` in protected function
By replacing static pointer and instance counter with shared_ptr, it's possible to expose VirtualDesktopInfo so its subclasses can use the instance without creating a new one, which also saves some memory.
Required by !2373 (merged)