SI-8306: handle SWITCH nodes with just default case

Handle properly SWITCH nodes that contain just a default case in optimizer
(ConstantOptimization). SWITCH with just default case is expressed as a
node with empty tags and exactly one label. We can handle such nodes
easily by introducing a shortcut in logic that computes reachableLabels.

Add a test case which triggers patmat to generate SWITCH node with just
a default case.

Fixes SI-8306.
Merge pull request #3560 from gkossakowski/issue/SI-8306

SI-8306: handle SWITCH nodes with just default case
Fix quasiquote terminology to be consistent with Scheme

1. Rename cardinality into rank. Shorter word, easier to
   understand, more appropriate in our context.

2. Previously we called any dollar substitution splicing
   but this is not consistent with Scheme where splicing
   is substitution with non-zero rank.

   So now $foo is unquoting and ..$foo and ...$foo is
   unquote splicing or just splicing. Correspondingly
   splicee becomes unquotee.

3. Rename si7980 test into t7980
Tweak signature for quasiquote's apply

Even though quasiquotes are whitebox macros their
return values are in fact always trees. This might
help IDEs with macro expansions turned off.
Merge pull request #3568 from densh/topic/qq-terminology

Fix quasiquote terminology to be consistent with Scheme