2bf1a30b

Created Started Finished

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Model root provenance as an ADT and lift the defaults to the top level

Review feedback on #204: a `Bool` field is easy to read past, so make the
provenance a two-constructor type instead. Pattern matching on `Configured`
versus `Default` now forces every dead-root check to say what it does with a
defaulted section, rather than relying on a guard against a flag.

The default root sections also become top-level bindings, so the TOML decoder
can name them directly instead of destructuring `defaultConfig` in a where
clause.