Compile include files specially

Parts of this commit are based on a patch by Josef Reidinger.
Optionally compile |include| statements as |YCP.include|

Until now we let ycpc to inline include files for us. This commit
introduces capability to remove inlined include files code and instead
compile the |include| statements as |YCP.include|.

This capability is hidden behind a command-line option
(--dont-inline-include-files), but this is just temporary. Once we make
sure this works properly and the Ruby bindings implement |YCP.include|,
we will probably remove the option and just always inline.

Note the uninlining works only for toplevel includes. The plan is to
make Y2R detect non-toplevel includes later and fix these manually.

Parts of this commit are based on a patch by Josef Reidinger.
Handle skipped |include| statements correctly

The <include skipped="1" name="..."> elements are now skipped. They are
generated when the same file is included multiple times and there is no
corresponding closing <filename> element generated for them (which
caused problems because Y2R code didn't anticipate that).
Fix <include> and <filename> handling with --extract-file

Before this commit, all AST nodes representing <include> and <filename>
elements were discarded when --extract-file was used. This breaks
--dont-inline-include-files because it relies on these nodes to detect
include file boundaries. This manifested by inlining nested includes
when both --extract-file (on the outer include) and
--dont-inline-include-files were used.

This commit fixes the code to keep the AST nodes which are part of the
extracted statements intact.

Based on a patch by Josef Reidinger.
Delay running module initialization code

The module initialization code (or files included by it) may require the
module global variable to be available.
Use correct filename when --extract-file is used

Based on a patch by Josef Reidinger.