Flatten tuple returned by ping/1,2,3

The tuple returned by ping/1,2,3 was frankly bizarre.
Simplify socket privileges

Attempt to open the ICMP socket before falling back to the procket
setuid helper. Remove the setuid option.
tracert: simplify socket privileges

Attempt to open the raw socket before calling the procket setuid helper.

Fix IPv6 UDP traceroute. Bind the socket by default.
Merge branch 'flatten-tuple' into tuple

Conflicts:
	README.md
	test/gen_icmp_tests.erl
ping/1,2,3: convert ICMP details into a tuple

Use a constant arity-3 tuple for the ping attributes (id, sequence
number and elapsed time). In the case of an ICMP error, not enough of
the packet header may be returned to calculate the time, so the atom
'undefined' is returned.
Include TTL from IP header

For IPv4 packets, include the TTL from the IP header. For IPv6 packets,
the inet driver does not return the header so the atom 'undefined' is
returned instead.
Add option to set the socket TTL

Works for IPv4. For IPv6, the IPV6_UNICAST_HOPS is properly set, but the
ICMP6 time exceeded is dropped by gen_icmp (timeout error is returned
instead).
Fix ICMP6 error messages
Retrieve the TTL for IPv6 sockets

Display the IPV6_UNICAST_HOPS setting for the socket. This is not the
TTL contained in the packet; it is the max ttl for the socket.
Merge branch 'dev'

Conflicts:
	src/gen_icmp.app.src