Started work on the lightspeed compiler again.

Summary:
This diff encapsulates a few changes:

  * Removal of random generation functions IRuntimeContext; layers have been changed to using AlgorithmUtility instead.
  * Cleanup and simplification of generated layer code using AST visitors.
  * Addition of unit tests for verifying that compiled layers have the same output as runtime layers.

Test Plan: Run the unit tests.  Run `ProceduralGenCompiler`.  It should output the generated code for a passthrough layer taking an initial bool as an input.  It should also output at the very end that the runtime layer and compiler layer result in the same data.

Reviewers: Sabre070

Reviewed By: Sabre070

Maniphest Tasks: T13

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