New factory DSL options:
1. `auto_build` allows you to provide a list of relationships which must also be built when building that factory.
2. `auto_load` allows you to provide a load statement for relationships and calculations that must be loaded when building that factory.
Reviewed-on: #83
Co-authored-by: James Harton <james@harton.nz>
Co-committed-by: James Harton <james@harton.nz>
This required a bit of a rework of how the options are validated. Now they're only validated once when `Builder.build` is called instead of inside each builder.
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>