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.
I think there is a difference between `acceptShare` and `declineShare`.

`acceptShare` is not performing any destructive action, while `declineShare` is.  As far I can see this allows anyone with the knowledge of a token to remove the share.  

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.

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.

Or am I missing something?