* Add benchmark for expression
There are 3 phases: generate strings, parsing, executing.
The string generation phase is as follows:
Only the 4 basic math (two argument aka binary) operations are used,
it starts with a pool of nodes (initially a node is just a variable),
and randomly combines 2 nodes until only one node remains.
Parsing and executing are straightforward uses of the Expression class.
* Split out expression generator to Python script.
The benchmark was bogus before. I missed this error:
convex_hull_3d.gd:34 @ _bench_convex(): Ignoring surface 0, incorrect vertex count: 10000 (for PRIMITIVE_TRIANGLES).
<C++ Error> Condition "(len % 3) != 0" is true. Continuing.
Also tweaked the iteration count so it takes a reasonable time.