Without this patch, a stray `endif caused sv2v to take the tail of an
empty list. Now we raise a lexical error.
To do this, the patch pulls the "push" and "pop" logic for the
preprocessor condition stack into separate helper
functions (pushCondStack and popCondStack). It also defines some
helper functions for manipulating Cond's.
The patch also adds a documentation comment explaining what the
different values of Code meant (because I had to squint to work it
out).
- adds support for using macros and macro arguments within the argument
list to other macros
- fixes an issue where macros with arguments would have extraneous
whitespace
- fixes handling of multiline string literals