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.


Is it important to expose the duration timed out or would `Error() string` be sufficient?