Documentation and decomposition

This addresses #22, #19, #18, #6, #3, and #2. The diff will probably be way too noisy, but the changes here are essentially:

* Every set and component is documented with a `README`
* Each terminal expression takes a `defnix` argument
* Configuration values (e.g. `target-system`) are placed into `defnix.config`
* `default.nix` composes everything together and takes a set of overrides (see top-level README for details)

Check out https://github.com/shlevy/defnix/tree/documentation-and-decomposition for specifics.