Add support for IPv6 and additional range formats

In addition, the parsing of ranges and addresses now uses Net::IP objects
so some validation is being done.  Not all the error paths are implemented
yet, so invalid input is likely to cause failures.

Another advantage of using Net::IP, you can now pass all forms of ranges
including host address, prefix in CIDR notation and range using first and
last address separated by a dash.