Use the right GC version macros.

Reported by Doug Evans <xdje42@gmail.com>.

* libguile/gc.c (scm_storage_prehistory): Use GC_VERSION_MICRO, not
  GC_ALPHA_VERSION.
Constant folding for (list) and (vector) in peval

* module/language/tree-il/peval.scm (peval): Add cases for (list) -> '()
  and (vector) -> #().
Refactor dominator computation

* module/language/cps/cse.scm:
* module/language/cps/dfg.scm (compute-idoms, compute-dom-edges): Move
  these procedures from cse.scm to dfg.scm.
  Remove loop-detection code; that can come back later but it is
  bitrotten for now.
New module: (language cps nameset)

* module/language/cps/nameset.scm: New file.
* module/Makefile.am: Add new file.
Rewrite type inference pass to use namesets

* module/Makefile.am: Build types.scm early, but don't block the rest of
  the build on it.

* module/language/cps/types.scm: Rewrite to use namesets.

* module/language/cps/dce.scm:
* module/language/cps/type-fold.scm: Adapt to interface changes.
Fix bit-count* bug

* libguile/bitvectors.c (scm_bit_count_star): Fix typo introduced in
  2005 refactor (!) in which the second arg was erroneously taken from
  the first arg.

* test-suite/tests/bitvectors.test: Add test.

* doc/ref/api-compound.texi: Fix doc example for u32vector selector.
New module: (language cps intset)

* module/Makefile.am: Add to build.
* module/language/cps/intset.scm: New file.
Rewrite CSE to use intsets.

* module/language/cps/cse.scm: Rewrite using intsets.
New module (language cps intmap)

* module/language/cps/intmap.scm: New file.
* module/Makefile.am: Add to build.
Rewrite type inference to use intmaps

* module/language/cps/types.scm: Rewrite to use intmaps instead of
  namesets.
Remove namesets.

This was a failed experiment.  It had good space complexity but terrible
time complexity.

* module/Makefile.am: Update.
* module/language/cps/nameset.scm: Remove.
Fix intset pruning for empty intsets

* module/language/cps/intset.scm (make-intset/prune): Fix empty intset
  case.
Fix an intset-intersect corner case

* module/language/cps/intset.scm (intset-intersect): Avoid creating
  invalid intsets when lowering an intset with a higher shift.
Result of intsect-intersect will share structure with A if it can

* module/language/cps/intset.scm (intset-intersect): Ensure that the
  result shares structure with A if possible, as intmaps do.
CSE truth inference pass uses intsets

* module/language/cps/cse.scm (compute-truthy-expressions): Rewrite to
  use intsets instead of bitvectors.
  (apply-cse): Adapt.
Fix intmap-intersect corner case

* module/language/cps/intmap.scm (intmap-intersect): Fix a corner case,
  as was recently fixed for intsets.
Remove size limit in elide-type-checks

* module/language/cps/dce.scm (elide-type-checks!): Remove limit on
  label-count, now that complexity is under control.
Fix intset on 32-bit machines

* module/language/cps/intset.scm (*leaf-bits*): Define to 4 on 32-bit
  machines, to stay in fixnum range.
Add intset-subtract.

* module/language/cps/intset.scm (intset-subtract): New interface.
CSE comments

* module/language/cps/cse.scm (compute-available-expressions): Add
  clarifying comment.