duration-values

Add support to decode `time.Duration` values from the environment.
AFAIK this is the only way to do this accurately given the structure of the code:
```
if t := f.Type(); t.PkgPath() == "time" && t.Name() == "Duration" {
...
```

If there is a better way I'd love to find out.

Also looking forward to this PR being merged.