Sync with clang.
Refactor Warren's changes, in preparation to sync them back into clang.
The structure of the CFG is now different.  In particular:

(*) Instructions now point directly to SExprs, rather than Variables.
    This reduces the number of variables in the CFG.

(*) Each SExpr now has an ID and a pointer to a basic block.
    - The ID uniquely identifies a SExpr within a CFG.
    - Not all SExprs are instructions.  Literals, declarations, and types
      are not instructions in a basic block.
    - SExprs which are not instructions have a null ptr and zero ID.

(*) Some instructions in a basic block may still be Variables.
    - Variables hold SExprs that were given an explicit name at the source code
      level, e.g. an explicit "let foo = ..." in the source will introduce a
      variable named "foo".  The name is retained for diagnostic purposes.
    - The underlying SExpr is stored as a sub-expression of the Variable.
      It does not have its own ID or block pointer.