feat: allow passing ast to the manipulator
refactor: don't use .map / .reduce

Dropping those functional constructs give Chrome
50% perf increase (for the evaluation part) and
also has positive impact on FFox performane.

Aditianlly it works out-of the box with IE.

Disclaimer: I still love those functional constructs
but it the hot code like this we are better off
with standard array manipulations.