inpcb: Save local group index

So that the caller, e.g. UDP protocol, could redistribute the inpcb
accordingly.

We keep the local group sorted by the inpcb local group index in
ascending order.  This eases the multi-process userland application
which uses SO_REUSEPORT sockets and binds process to the owner cpu
of the SO_REUSEPORT socket:
If we didn't sort the local group by the inpcb local group index and
one of the process owning an inpcb in this local group restarted, e.g.
crashed and restarted by watchdog, other processes owning a inpcb in
this local group would have to detect that event, refetch its socket's
owner cpu, and re-bind.
inpcb: Add in_pcb{link,unlink}_flags() to bypass INP_WILDCARD check

It is safe to change the inpcb's pcblist while the it is still referenced
by the wildcard hash.
udp: Redistribute SO_REUSEPORT socket based on local group index

This improves the request/response transation rate a lot for UDP sockets
which set SO_REUSEPORT, by cpu localizing the request and response
processing.

tools/netrate/udpecho 64B request/response transation rate is raised from
1.24Mtrans/s to 1.39Mtrans/s (~12% improvement).
socket: Provide socket owner cpuid hint

If the cpuid hint could not be provided or the cpuid hint does not make
sense, -1 will be returned as cpuid hint, e.g. TCP listen sockets w/o
SO_REUSEPORT.

This helps avoiding unnecessary IPIs and contention on receiving sockbuf
token.
tools/netrate: Get socket's cpu hint and bind cpu accordingly