[Mono.Posix] Parameters for chown should be signed integers not unsigned (#15828)
Fixes https://github.com/mono/mono/issues/10748
The calls for chown, lchown, fchown, and fchownat (from `Mono.Unix.Native.Syscall`) are all declared with unsigned integers for the `owner` and `group` parameters. This is incorrect.
Directly from the manpage
`man 2 chown`
<pre><code>
...
int chown(const char *pathname, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *pathname, uid_t owner, gid_t group);
...
int fchownat(int dirfd, const char *pathname,
uid_t owner, gid_t group, int flags);
...
...
<b>If the owner or group is specified as -1</b>, then that ID is not changed.
...
</pre></code>
Emphasis added on the documentation explaining how the parameters can take the value -1, clearly not an unsigned integer. The `uid_t` struct is not an unsigned integer. I am assuming this was just an oversite on whoever re-wrote `Mono.Unix.Native.Syscall`.
The original calls from `Mono.Posix.Syscall` (now marked as Obsolete) all correctly use signed integers.
```
[DllImport ("libc", SetLastError=true)]
public static extern int chown (string path, int owner, int group);
[DllImport ("libc", SetLastError=true)]
public static extern int lchown (string path, int owner, int group);
```
Even the documentation directly from `mcs/class/Mono.Posix/Documentation/en/Mono.Unix.Native/Syscall.xml`
```
<para>
One of the owner or group id's
may be left unchanged by specifying it as -1.
</para>
```