feat #329 Remove unnecessary code during Grunt build: part1

This commits brings a general-usage function to do recursive replacements
in the AST given the replacements conditions, and adds two sample visitors
that remove [$]descriptions from the beans and event definitions.

The visitors are also capable to compute the number of bytes saved in the
process (the number is displayed at the end of the build by a newly
created Grunt task).