Add a public api for apps to add mounts

This adds a public api which apps can use to add additional mountpoints in a more structured way then listening to hooks.

First PR for #12216

cc @PVince81 @DeepDiver1975 
Okay, so IMountProvider is the instance that the newer ext storage plugins will have to implement and register.
The providers are registered to the global IMountManager (aka IMountProviderCollection)

And then the filesystem code will ask the IMountManager to give a list of IMount for a given user. Got it.

So in general it means that what we call a mount point "IMount" is IStorage + storage Settings + scope (applicable user/group)

Hmmm... would it make sense to separate the scope/user from the storage config and put it on a different level ? Storage config should only be about settings like host, username, password, etc.

Maybe this could help remove the distinction between Mount and Storage and we could somehow merge them.