Mark messages finished after maxAttempts is reached

Even when messages are "discarded", we need to mark them as complete. Otherwise they will just bounce around the queues and count against max-in-flight.

- [go-nsq](https://github.com/bitly/go-nsq/blob/b575b101dfeecfc12abf5d1a85213c39561eaec9/consumer.go#L912)
- [pynsq](https://github.com/bitly/pynsq/blob/0d4e48804e37c79e8ca86f2b2d7cf1291fcb967a/nsq/reader.py#L301)

CC: @calvinfo @visionmedia