A task control block manages a task and the queue of work packages associated
with it.
@param {TaskControlBlock} link the preceding block in the linked block list
@param {int} id the id of this block
@param {int} priority the priority of this block
@param {Packet} queue the queue of packages to be processed by the task
@param {Task} task the task
@constructor
function TaskControlBlock(link, id, priority, queue, task) {
  this.link = link;
  this.id = id;
  this.priority = priority;
  this.queue = queue;
  this.task = task;
  if (queue == null) {
    this.state = STATE_SUSPENDED;
  } else {
    this.state = STATE_SUSPENDED_RUNNABLE;
  }
}