This commit merges functions "elseBlock" and "elifBlock" in a single
function "alternativeBlock". Any call to either function is replaced by
a call to "alternativeBlock", which cover all alternatives (elif,
elifdef and else). The goal is twofold:
1) Correct the grammar to allow all kind of alternatives independently
of the "if" directive. Before the fix, "#if" alternative was
generated by elseBlock only, and thus disallow "#elifdef" as a
follow-up.
2) As a side effect, simplify the parser.