Greatly simplify the retry policy and replace sleeps with a submit into
a ScheduledExecutorService.  Also, expose retry functionality through a
new Retryables utlity class.  It should be possible to add different
execution semantics as new methods to Retryables.