tests/pp/pp-def-7: another test case for recursive macro invocation

This test case catches the case when a roken is permanently marked as
"NO_EXPAND" so even if cases when it should be expanded it still isn't.
Prepr: new approach to macro expansion

Instead of storing lists of expanded tokens, we generate the tokens
on the fly from the macro definition. This improves performance.

We also caught and fixed a few edge cases which were failing.

Token source coordinates are still shaky in this commit and need to
be worked on.