Make Retrying object 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.

I also altered the decorator a bit so that every call to the wrapped function is not creating a brand new Retrying object. Might not save a whole lot unless functions are called rapidly but its still less work to create it up front.

I also added a couple tests.