STORM-495: KafkaSpout retries with exponential backoff

This is an implementation of the improvement request STORM-495:
    https://issues.apache.org/jira/browse/STORM-495

The KafkaSpout keeps track of failed messages through multiple retries, and delays their resubmission to the topology with an exponentially increasing delay time.  The spout does not terminate the retry cycle (it is my conviction that it should not do so, because it cannot report context about the failure that happened to abort the reqeust), it only handles delaying the retries.  A bolt in the topology is still expected to eventually call ack() instead of fail() to stop the cycle.
Can we do some sanity checking in the `KafkaSpout.open()` method? At that point you should be able to compare both the `SpoutConfig` and the `backtype.storm.Config` to see if `MESSAGE_TIMEOUT_SECS` is set appropriately.

If it is not, we should throw and `IllegalStateException` (with a good message explaining the problem) or at the very least log (loud) errors.

My (and I suspect @d2r's) fear is that if there is a misconfiguration, it could be very difficult for a user to debug.

I would also make the comments javadoc comments.