quickfix: avoid aborting after first #error encounter

proceed lexing and afterward restrict the feature expressions of all tokens to valid configurations.

 this is an incomplete solution. the lexer should not continue in invalid configurations (e.g. try to expand macros there). a better solution would be to rewrite the feature model as well.
Merge remote-tracking branch 'upstream/master'
-- Added all possible selection combinations for extract function evaluation
-- Added all possible selection combinations for extract function evaluation
-- Removed extern specifier in from arguments in functions
typechecking is now also done on expressions in "stuff" in GnuAsmExpressions, this fixes CDeclUse problems

computeNextRelevantFeatures missed a case where Opt node entries were not of type AST (in GnuAsmExpressions there were Opt[String] nodes)

added conditionalExpressions for expressions in for/while/do/switch statements

added a function to convert Conditional[Expr] to ConditionalExpr; example:
Choice(def(A),One(Id(a)),Choice(def(B),One(Id(b)),One(null))) -> (id2i_opt.a ? a : ((! id2i_opt.b) ?  : b))

introduced conditional expressions to declarations with assignments; example:
int x = 5 *
#if definedEx(A)
0
#else
1
#endif
;
-> int x =  (id2i_opt.a ? (5 * 0) : (id2i_opt.a ?  : (5 * 1)));
this is NOT done for global declarations, as they have to be constant.
Merge remote-tracking branch 'origin/master'
fixed computation of relevant tuples from choice nodes in a context, before I used to filter the choice nodes for features that imply the context, but choice nodes in a context do not have that context as part of their features.

added a new function to transform ifstatements using conditionalExpressions

fixed bugs in IfStatements with variability in the thenbranch inside the ElifStatements

added two test files for IfStatement transformations
Merge remote-tracking branch 'origin/master' into ldv-gen
missing import