Make it possible to float expressions to in-between lambdas.

The code in this patch is based on Emil's code. 

There's a corresponding patch necessary for the compiler to remain buildable.