This makes the design a little easier to understand and change.
Also implements building of many params/records as a side-effect.
Reviewed-on: https://code.harton.nz/james/smokestack/pulls/6
Co-authored-by: James Harton <james@harton.nz>
Co-committed-by: James Harton <james@harton.nz>