Retry package based on Sean's composition design with essential logical refinements / fixes

Added more tests, custom error structs and fixed logic in essential parts: For this introduced a tristate as decision output of retrier aspecifiedd evaluator for composed strategies.

We use three states, Yes, Maybe and No. To evaluate composed strategies:

```
// We retry (output Yes) if one or more retriers evaluate to Yes and none says No 
// To output Yes some can also evaluate to Maybe as long as one evaluates to Yes. 
// If all evaluate to Maybe we will return Maybe.
// If one evaluates to No we'll return No regardless what the others returned
```

To optimize the evaluation by the strategies.Retry function we make use of arithmetic properties of the values representing the states.


It's easier to export something that is needed, than un-export something that needs to change.  I default to needing a use case first before exporting any symbols.  Since the use case is covered with the type assertion, I don't think we should also export `Duration` until its needed.