sqs.message: Raising an exception in decode() should not abort parsing

Since AWS seems to return Body before ReceiptHandle, raising an exception in e.g. boto.sqs.jsonmessage.JsonMessage.decode() will abort processing before the receipt handle is read.

This is a problem, because there's no way to dequeue the malformed message without the handle.

Instead, we should wait to invoke decode() until parsing is finished. This PR provides an additional callback to an entity when it's popped from the stack during parsing.