Added error handling for invalid macro names.
Added test for a macro with the body that uses another macro. No
substitution should be expected in this case.
Added Grunt build file. The code of preprocessor is linted as part of
the build.

Corrected the issues found by the linting tool.