error in message preprocess can cause perpetual requeue loop

pynsq reader exposes a preprocess_method to the reader. Any exceptions there cause the message to be requeued. This happens before the line for giving up on a message (which is a client responsibility) which means that you can end up in a perpetual retry loop.

At bitly we use preprocess_message to do a simple `json.loads(message.body)` so any unicode errors cause this state.
i suppose `giving_up` could throw an exception.