Queue.h

  unget, put
  Call a general purpose grow method, which calls resize to do most of
  the work. 
DONE

  remove
  Rewrite to remove in-place, instead of copying the whole queue.
DONE

  set_length
  Currently, if the length specified is greater than the size, the
  length is set to the size.  This is wrong.  It should resize the
  queue to be large enough for length.

  The whole implementation is inefficient.  number_elements should NOT
  be maintained, but calculated.  Things like get and put should be
  trivial inlines, not 20 line functions.
DONE

  I think the names first_in and last_in are confusing.  I would call
  them in and out.
DONE

  In addition, since queue always works sequentially,
  it's better to use pointers instead of array references [].


  There needs to be additional overloaded versions of get and unput, which
  take a reference to a return value, and return a Boolean success flag.
DONE
