Added support for Initialize() in algorithms.

Summary:
This adds support in the lightspeed compiler for the `Initialize()` call inside algorithms, where the compiler will copy the code and refactor it appropriately before the main for loop of the compiled layer.

It also adds more refactoring visitors that clean up and simplify the generated code even further, reducing expressions such as `(x - 2) - x` to `-2` and so on.

Test Plan: If you run `ProceduralGenCompiler` it should display the generated code.  Comparing this to the actual implementation of `AlgorithmPerlin` and `AlgorithmZoom3D`, you should be able to notice areas where it's simplified and reduced expressions.  You should also be able to see the initialization of the perlin noise before the main for loop.

Reviewers: Sabre070

Maniphest Tasks: T13

Differential Revision: http://code.redpointsoftware.com.au/D44