mnl: revisit hook listing
Update this command to display the hook datapath for a packet depending
on its family.
This patch also includes:
- Group of existing hooks based on the hook location.
- Order hooks by priority, from INT_MIN to INT_MAX.
- Do not add sign to priority zero.
- Refresh include/linux/netfilter/nfnetlink_hook.h cache copy.
- Use NFNLA_CHAIN_* attributes to print the chain family, table and name.
  If NFNLA_CHAIN_* attributes are not available, display the hookfn name.
- Update syntax: remove optional hook parameter, promote the 'device'
  argument.
The following example shows the hook datapath for IPv4 packets coming in
from netdevice 'eth0':
 # nft list hooks ip device eth0
 family ip {
        hook ingress {
                +
0000000010 chain netdev x y [nf_tables]
                +
0000000300 chain inet m w  [nf_tables]
        }
        hook input {
                -
0000000100 chain ip a b [nf_tables]
                +
0000000300 chain inet m z [nf_tables]
        }
        hook forward {
                -
0000000225 selinux_ipv4_forward
                 
0000000000 chain ip a c [nf_tables]
        }
        hook output {
                -
0000000225 selinux_ipv4_output
        }
        hook postrouting {
                +
0000000225 selinux_ipv4_postroute
        }
 }
Note that the listing above includes the existing netdev and inet
hooks/chains which *might* interfer in the travel of an incoming IPv4
packet. This allows users to debug the pipeline, basically, to
understand in what order the hooks/chains are evaluated for the IPv4
packets.
If the netdevice is not specified, then the ingress hooks are not
shown.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>