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.


This looks like it can be implemented without as many mutations.  Why not have the contract to be first one to respond no, responds no, first one to respond yes, responds yes, otherwise respond no.

With this in mind, the enumeration seems more appropriate as `Abort`, `Skip`, `Retry`.