Transport/network layer: link layer must provide packets

This is a big change. We now require the link layer to provide packets
to the transport/network layer instead of a stream of bytes. If we don't
do this, the transport/network layer cannot know where a packet starts
or ends, since if a length field is corrupt somehow, the ending of a
packet cannot be determined reliably anymore.