Fix #if-skipping to *really* skip the skipped group.

Previously we were avoiding printing within a skipped group, but we
were still evluating directives such as #define and #undef and still
emitting diagnostics for things such as macro calls with the wrong
number of arguments.

Add a test for this and fix it with a high-priority rule in the lexer
that consumes the skipped content.
diff --git a/glcpp-parse.y b/glcpp-parse.y
index f4c834e..dd8e133 100644
--- a/glcpp-parse.y
+++ b/glcpp-parse.y
@@ -159,19 +159,11 @@
 
 line:
 	control_line {
-		if (parser->skip_stack == NULL ||
-		    parser->skip_stack->type == SKIP_NO_SKIP)
-		{
-			printf ("\n");
-		}
+		printf ("\n");
 	}
 |	text_line {
-		if (parser->skip_stack == NULL ||
-		    parser->skip_stack->type == SKIP_NO_SKIP)
-		{
-			_glcpp_parser_print_expanded_token_list (parser, $1);
-			printf ("\n");
-		}
+		_glcpp_parser_print_expanded_token_list (parser, $1);
+		printf ("\n");
 		talloc_free ($1);
 	}
 |	expanded_line
@@ -889,6 +881,7 @@
 	parser->defines = hash_table_ctor (32, hash_table_string_hash,
 					   hash_table_string_compare);
 	parser->active = _string_list_create (parser);
+	parser->lexing_if = 0;
 	parser->space_tokens = 1;
 	parser->newline_as_space = 0;
 	parser->in_control_line = 0;