Add Ethernet constructor, with VLAN support.

Add IP constructor.  Add more IP constants for TTLs, TOS, protocols,
congestion, etc. Paste in the checksum after constructing the header.
Allow IP to take either literal data or another NetPacket::{UDP,TCP,ICMP,
IGMP} object as the payload. Infer the protocol from the payload object
class in the latter case. Invoke payload's checksum method with new
IP object from constructor.

Add UDP constructor.

Correct packet length in UDP test case.