improve solution for ICMPv6 length issue

Following a suggestion on netdev from Hannes Frederic Sowa, this
commit:

- introduces a "icmp6_head" field to "struct icmp6hdr" (along
  with #defines to bypass icmpv6_head),

- uses "struct icmp6hdr_head" instead of "struct icmp6hd" in
  net/ipv6/raw.c:icmpv6_filter,

- renames "hdr" and "_hdr" to "head" and "_head", and

- also corrects the type of the former "_hdr".