server to server sharing next generation

Next step in server-to-server sharing next generation, see https://github.com/owncloud/core/issues/12285

Beside some small improvements and bug fixes this will probably the final state for OC8.

To test this you need to set up two ownCloud instances. Let's say:
- URL: myPC/firstOwnCloud user: user1
- URL: myPC/secondOwnCloud user: user2

Now user1 can share a file with user2 by entering the username and the URL to the second ownCloud to the share-drop-down, in this case "user2@myPC/secondOwnCloud".

The next time user2 login he will get a notification that he received a server-to-server share with the option to accept/decline it. If he accept it the share will be mounted. In both cases a event will be send back to user1 and add a notification to the activity stream that the share was accepted/declined.

If user1 decides to unshare the file again from user2 the share will automatically be removed from the second ownCloud server and user2 will see a notification in his activity stream that user1@myPC/firstOwnCloud has unshared the file/folder from him.

ToDo (I will provide PRs for it):

- [ ] add implementation  isShareTypeAllowed() in share_backend for calendar
- [ ] add implementation  isShareTypeAllowed() in share_backend for contacts

This is ready for testing and reviewing cc @LukasReschke @icewind1991 @MorrisJobke @PVince81 
Probably better to migrate into it's own helper function. Otherwise the same code is repeated again over core over and over again.

Also missing the certificate manager as at https://github.com/owncloud/core/blob/140faf2c300bd15ea89785742445e1282ea01671/apps/files_sharing/lib/external/storage.php#L191-L203