/*
 * call-seq:
 *      mq.shift([buffer, [timeout]])                => message
 *
 * Takes the highest priority message off the queue and returns
 * the message as a String.
 *
 * If the optional +buffer+ is present, then it must be a String
 * which will receive the data.
 *
 * If the optional +timeout+ is present, then it may be a Float
 * or Integer specifying the timeout in seconds.  Errno::ETIMEDOUT
 * will be raised if +timeout+ has elapsed and there are no messages
 * in the queue.
 *
 * On some older systems, the +timeout+ argument is not currently
 * supported and may raise NotImplementedError if +timeout+ is used.
 */
static VALUE shift(int argc, VALUE *argv, VALUE self)
{
        return _receive(0, argc, argv, self);
}