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).