Fix parsing of IPv6 addresses

    * Sometimes IPv6 addresses are mixed up as MAC addresses due to
    inspecting only the first one or two octets. If the parsing of an IPv6
    address fails due to being parsed as MAC address, fallback to IPv6
    parsing.

    * Support simplified IPv6 addresses:

       - ::1         === 0000:0000:0000:0000:0000:0000:0000:0001.
       - 1::         === 0001:0000:0000:0000:0000:0000:0000:0000.
       - 1::1        === 0001:0000:0000:0000:0000:0000:0000:0001.
       - ff:ff:ff::1 === 00ff:00ff:00ff:0000:0000:0000:0000:0001.
Improve parsing of IPv6 with mask addresses

- Extend function 'check_non_network_bits_in_addr' to work with IPv6
  addresses.
- IPv6/mask is not valid syntax, only IPv6/len should be supported.
- Add more tests.
Implement lowering of 'host' and 'net' for IPv6 addresses