Allow lookups by address in addition to sockaddr-lookups in system radix.
Radix is build around using "sockaddr-like structures", which requires callers to fill in these structures during lookups. This, in turn, leads to the next-order function signatures build around sockaddrs. Sometimes this is useful, however in many cases sockaddrs are not used by the certain subsystem internally.
Lastly, there are quite a lot of alternative data structures providing LPM, that typically do not require using sockaddrs.
As the key length is fixed per address family, store it inside radix structure, similar to the key offset.
To continue allowing support for variable-length keys, add special rn_match_fixed() function that uses the in-radix stored offset and does *not* access any fields in the provided key beyond [offset; offset + key_length] interval.
This allows passing adjusted pointer to the IPv4/IPv6 address without filling the sockaddr structure.
Finally, convert the existing parts of fib(9) api to leverage these changes.