Add #11331 - support iteration / foreach (and then some ...)

This is a *very big* PR with a refactored grammar (the egrammar) with experimental support for lambdas and iteration functions. 

The work is described in arm-2.iteration.

For a reviewer, the name "pops" is used as the project name for the future stuff. The idea is to make only required changes to the rest of the lib/puppet/* codebase. 

rgen >= 0.6.1 is required to run the tests, and in order to use the new --parser future feature.