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.


However i coudlnt write a expressive error string that contains that information without storing the value(s) in the struct(s) (same accounts for the max attempts strategy i think). so therefore i d say its not too bad to keep it in there. otherwise we are back at constructing the error string when the error happens using fmt.Errorf but then we cant identify the error type.