Delay checking if the Shared folder should be visible until the storage is used

This prevents having to get the files shared with the user every time the filesystem is setup.
Saves about 10 database queries in my test setup

Done by adding an `isVisible()` method to the storage api which can be used to hide a storage from the result of `View->getDirectoryContent()`

cc @karlitschek @DeepDiver1975 @PVince81