Huge overhaul of the parameter handling system
- Layers and processes no longer use Param(s) by default; the user must now opt-in to the parmeter system with the now resurrected CryoGrid.parameterize method. This removes some complexity from the Stratigraphy types which considerably speeds up initial compile time and reduces noise in stack traces.
- Properties/constants are now handled more consistently. In particular, we can now account for the fact that properties/constants definitions may be dependent on the layer/process configuration.
- To facilitate this, there is a new macro @properties which generates structs that wrap NamedTuples. The container structs can be defined with default values but are flexible enough to have additional properties added by downstream components; e.g. Soil can define additional constants for the ThermalProperties type. This resolves the weird fracturing of properties in different places that existed before.
- Additionally, the Soil types have received yet another long overdue refactoring which features improved/simplified type names and an additional MineralSediment parameterization dedicated to the inhomogeneous/non-organic soil profile use-case.