Move test variables to inside "should"
Make ConfigReader a proper trait

This is needed because `ConfigReader` must be invariant as it is right
now, and a type alias keeps the variance of the original type.

If `ConfigReader` is not invariant, the `errorReader` inside
`ConfigLoadingHelpers` is always going to be used instead of the
“useful” readers (why?).
Add a version of `errorIf` with a single validator
Add tests for extractor and validator loading from configs