introduce names for user backends - via IUserBackend

cc @DeepDiver1975 @icewind1991 @PVince81 @DeepDiver1975 

Is this how we should add stuff to a interface that is implemented by third party apps?

ref #12620 #12806 
almost. $backend not $this-backend. we're looping through $this->backends.