* Add ExecState that combines ProgramMemory and DynamicState
* Remove unneeded clones
* Add exec_state parameter to all KCL stdlib functions
* Move pipe value into ExecState
* Add test for pipe substitution not leaking into function calls
* KCL: Better message on assertEqual function
Also add a new no-visual test for performance testing.
* Fix new array module to use ExecState
---------
Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev>
As @jon points out, "It's not only used in ProgramMemory. It's also
used as the return value of functions and as what gets substituted in
for the pipe substitution symbol %"
* Lower threshold for 2020 tests
Now that the tests zoom into the model and center it before taking a
snapshot, they should be less sensitive.
* Genuine, nontrivial changes to the integration test images
Previously these functions could not be used with `#[stdlib]` proc-macro:
```rust
fn someFn(data: &'a str) {}
fn someFn<'a>(data: Foo<'a>) {}
```
But now they can.