Protocol enum field of value zero for sockets
### Summary

Add a field that explicitly maps to zero in the `Protocol` enum.


### Description

Some socket types require to pass a protocol value of 0 when creating them with the `socket` C function, with Unix domain sockets being one of them.

When I tried creating an Unix domain socket with the std/net wrappers, it failed with a "Protocol not supported" error, naturally since `newSocket` defaults with a protocol value of `IPPROTO_TCP`. The overload that takes `cint`s wasn't useful since it cast them to the defined enums.
I then discovered that `IPPROTO_IP` happens to map to zero, with that I could create the socket correctly. Although it works, it doesn't seem to be semantically correct (and not obvious at all).
So I propose a `IPPROTO_NONE` that maps to zero, for clarity reasons.

### Alternatives

_No response_

### Examples

```nim
import net

let sox = newSocket(AF_UNIX, SOCK_STREAM, IPPROTO_NONE)
sox.connectUnix("/tmp/usox")
sox.send("greetings from nim\n")
sox.close()
```

### Backwards Compatibility

_No response_

### Links

_No response_