Prepr: a clumsy first attempt at implementing macro arg re-scanning

It appears to be working, but I don't like it.
tests/pp/pp-def-7.c: add another test case for recursive expansion
tests/pp/pp-def-10.c: test cases for argument expansion
cpp.sh: improve jar path resolution
Preprocessor: improve generating of preprocessed source
tests/pp: add test infrastructure

A simle script preprocessing all files and comparing the result against
a saved result.