This removes the coupling of ShaderParameters to the running filter
graph. Previously the ShaderParameter value pointer was referenced
by the graph to read the values and these were mutated when updating
them live. Now the parameters are stored as state in the graph iteself.
This change removes the circular dependency.
This implementation is smaller and less complex, as the branches
for processing parameterGroups have been simplified.
The logic in Config.swift for processing ParameterGroups has been
simplified and removed concerns related to validating groups, which
now lies with SlangShader
Moved historyCount to OEShaderPassCompiler, which is another step
at separating the data model for shaders and parameters from
a specific processor. OEShaderPassCompiler is specific to transforming
individual Vulkan glsl passes, which is all the framework currently
supports. The end goal is that individual passes could be written in
Vulkan glsl or Metal.
Additional properties to slangp to support parameter groups:
```
parameter_groups = "foo;bar;default"
foo_group_desc = "Foo Desc"
foo_group_parameters = "a;b;c"
bar_group_parameters = "d;e"
# default group can override the position of the ungrouped params
default_group_desc = "Other parameters"
```