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'
:bomb: :bomb: :bomb:

This introduces a security bug. - `\OC_User::setUserId()` will also set the user session to the user:

```php
	/**
	 * Sets user id for session and triggers emit
	 */
	public static function setUserId($uid) {
		\OC::$server->getSession()->set('user_id', $uid);
	}
```

Since neither `$token` nor `$id` are secrets (you have them if somebody sent you a public link) this means an unauthenticated adversary can login as one of those users without providing any credentials.

:bomb: :bomb: :bomb: