timeout_deferred in deferredutils, add a retry function and tests

Conflicts:
	otter/util/deferredutils.py
Add function that will handle wrapping an error with TransientRetryError
Add test case for already fired deferred, and bug fix
Changed retry to take an interval function and can_retry function instead
Add test to make sure intervals are not repeated - if the interval function returns a new value, the next retry is scheduled at that interval
Refactor the bulk of retry out to a private class, so things don't have to be stored in lists

Conflicts:
	otter/util/deferredutils.py
Move the retry function to its own module so that default functions can be implemented

Conflicts:
	otter/util/deferredutils.py
Provide a default can_retry function
Provide a default next_interval function
Provide a convenience function that both times out and retries

Conflicts:
	otter/util/deferredutils.py
Add tests for synchronous do_work function, as per @dreid's suggestion
Extra assertions as per @manishtomar's suggestions
Rename termination as cancellation, since that's the only time it happens
Merge pull request #341 from rackerlabs/auto-488-retry-and-timeout-functions

Auto 488 retry and timeout functions