CDP dissector ends prematurely if a zero-length field is encountered

A zero-length data field is acceptible. However if `len` is correctly
set to zero then we incorrectly exit the processing loop before reading
every header from the packet.

Resolves the first part of #401.