Initial IPv6 work

Save and restore ip6tables as well as iptables state
Stop, status and panic apply to IPv6 as well as IPv4
Start will create an empty IPv6 firewall with policy applied
Fixes to saving files
Use ip6tables or iptables according to namespace
Another small fix
Fix both dynamic counters
Move all single-value options outside rules loop
Split processing for IPv4 and IPv6 addresses
Make rule_action_param() ip(6)tables use explicit
Prevent arbitrary namespace switches

For instance, creating an ipv4 rule in an ipv6 interface must be prevented
Also, cache the current namespace to improve performance
Allow independent setting of ipv4 and ipv6 src/dst
Reset namespace stack entering an interface/router

Fix error handling when an illegal change is detected
Distinguish between ipv4 and ipv6 chains we created
Use MULTICAST_IPS for the multicast service
Add notes on client ports
Include icmpv6 as a service
Add various icmpv6 cases

ICMPv6 is highly integral to IPv6 but the various types and ways that
they need to be used make them complex. We add a set of functions and
recommended how to use them in the manual.
Include extra information and an example for IPv6
Work with only IPv4 or IPv6 where necessary

Disables the other if the commands are not available or do now work.
Allow IPv4 and IPv6 in one src/dst using functions

The same function will be evaluated in both ipv4 and ipv6 context. It
should be defined to return appropriate values at the appropriate time.
Allow multiple functions to be used at once
Evaluate ip lists at time of extraction