eth: don't update length if not a 802.3 frame
raw: add tests
packet: fix length calculation for some protocols
udp: fix checksum in test
layers: compose and pack packets in inverse order

The previous behaviour was stupid, because the length, checksum, etc... fields
where computed on incomplete packets.
don't use raw_pkt to refer to a byte slice

It's confusing since we actually have a "raw" packet type.
eth/ipv4: turn type translation tables into maps