make Retrying callable and store stats

Because it is useful to do a one-off retry of a function.

Additionally, it is useful to be able to get stats from the retrying
object - how many attempts were made, what time did the retry start.