OCS API for server-to-server sharing

OCS API for server2server sharing as part of #12285 .

This is work in progress, I just want to give people a chance to look at it early.

This is how the API will look like:

POST to create new server2server share
```
http://localhost/oc/ocs/v1.php/cloud/shares
```

post data: shareWith, token, name, remote, remote_id, owner

POST to notify that the share was accepted
```
http://localhost/oc/ocs/v1.php/cloud/shares/{shareId}/accept
```

post data: token

POST to notify that the share was declined
```
http://localhost/oc/ocs/v1.php/cloud/shares/{shareId}/decline
```

post data: token

POST to unshare server-to-server share
```
http://localhost/oc/ocs/v1.php/cloud/shares/{shareId}/unshare
```
post data: 'token'

Known Issue:

- [ ] if a share was declined the encryption keys are not updated. Will be fixed once #12382 is merged. Doesn't make sense to try to fix this now.
> Since it uses the same codepath as regular shares a token is not a secret, if you share a file publicy you have access to the token. The ID can be easily enumerated then. Thus it allows anyone to unshare any share. Not really what we want.

The token is generated by server1 and send (hopefully via https) to server2. So only those two server (sender and recipient) know the token. I think that's safe enough, it is like a shared secret.

> From what I understand this is used to allow remote servers to remove a share? - Right? - If so I'd add another secret only known to the remote server and the local server.

That's already the token. Nobody besides the local and the remote server knows the token.