Simplify the refactor to use a plain Hash with fetch

This approach removes the complexity around structs of
repositories/observers and the like and allows simpler injection of a
mapping for the test suite.

I've also added a "raises if.." test to check it handles command line
typos appropriately.