refactor - reduce CTFE memory consumption pt 1

Currently, CTFE allocates memory for every step in its computation. This can result in an enormous amount allocated. This is the first step towards using stack memory instead.
> Conversion to  Expression*  should only be done when there is complete control over the lifetime,

Of course. I've done this before :-)