Add cstruct for ipv6 packet header
Initial commit of IPV6 module
Add cstruct for icmpv6
Add ipv6 checksum computation
Drop icmp6 packet if checksums don't match
Add NS output routine
Handle inbound NA messages
Add some debug statements
Rearrange code

Icmpv6 and Ipv6 will be implemented in the same module, and Ndv6 will be
implemented in a different module, mirroring the existing Ipv4/Arpv4
arrangement.
Add Routing + dummy `create' for testing
Rename for clarity
Fix protocol number
Add reference
Add `allocate_frame' routine
Allocate frame in `nd_ns_output'

This required shuffling code around quite a bit and in particular
removing the module `Ndpv6' and `Routing' from the picture, leaving a
single, monolithic module `Ipv6'.

The reason is that IPv6, ICMPv6, and NDPv6 are actually all protocols
lying on the same layer and there are a lot of cyclic dependencies
between them.  Later on it will be necessary to figure out a way to
decouple the different modules but for now it is simpler to put
everything in the same namespace.
Add `write' routine
Respond to ICMP Echo requests
Compute link-local address
Set default ip, gateway list
Make `allocate_frame' pure