this avoids the need for a config subclass to use `setdefault()` hacks
to specify default app handler for instance, since that approach must
compete with config extensions who also may wish to do that.
similar concept for the engine maker; notably the rattail project
needs to override this function somewhat and we need a way to allow
for that without (re-)introducing the app handler here.
had to move `make_engine_from_config()` out of app handler and define
as a separate function, so that `get_engines()` did not need to
instantiate the app handler. because if it did, then config
extensions would lose the ability to set a default app handler - er,
they could do it but it would be ignored
when fetching initial path listing, to create config object. should
only affect situations where default file paths are needed, i.e. when
caller does not specify
hoping i do not regret this decision.. since the tests do not live in
a "real" package i think the only way to share code is to add some
things to the main package
this has 100% test coverage and i intend to keep it that way. api
docs have a good start but still need narrative. several more things
must be added before i can seriously consider incorporating into
rattail but this seemed a good save point