A simple package of data that is manipulated by the tasks.  The exact layout
of the payload data carried by a packet is not importaint, and neither is the
nature of the work performed on packets by the tasks.

Besides carrying data, packets form linked lists and are hence used both as
data and worklists.
@param {Packet} link the tail of the linked list of packets
@param {int} id an ID for this packet
@param {int} kind the type of this packet
@constructor
function Packet(link, id, kind) {
  this.link = link;
  this.id = id;
  this.kind = kind;
  this.a1 = 0;
  this.a2 = new Array(DATA_SIZE);
}