Compute TCP checksum

Construct the pseudoheader and ones complement that with the serialized
packet (and a zero'd out checksum field).
Exclude checksum from TCP packet equality check
checksum: add padding for odd number of bytes
checksum: test checksum with repeated roundtrip property

Arbitrary instances for TCP and UDP simply set it to zero. Since the
marshal code recompute the checksum, the 0 value will not be preserved
and the roundtrip property will fail.

A simple way to get around this is to marshal and unmarshal a TCP or UDP
packet once, which will set the chksum field to the proper value, and
then check that the roundtrip property holds on that packet.
checksum: make pseudo header construction its own function
checksum: properly crate zero'd out, one byte Cstruct.t
Merge pull request #29 from frenetic-lang/checksum

Compute TCP checksum