Exponential backoff and fix for deadlock on failure.

If a part get fails after the configured number of tries,
it will set the getter global error variable. This is checked in the
Read and Close methods, but if the Reader is waiting for a chunk on the
read_ch, this can lead to deadlock. The chunk will never be sent since
it failed, and the find_next_chunk function will be blocked forever.
This adds a quit channel that is closed when a fatal error occurs.
Closing the channel will ensure the select does not block, and the
getter terminates.

Exponential backoff is also implemented for more robust retries on both
gets and puts.