BC-breaking changes to C-- CLOSURE syntax.

Previously, there were two variants of CLOSURE in C--:

    - Top-level CLOSURE(foo_closure, foo, lits...), which defines a new
      static closure and gives it a name, and

    - Array CLOSURE(foo, lits...), which was used for the static char
      and integer arrays.

They used the same name, were confusing, and didn't even generate
the correct internal label representation!  So now, we have two
new forms:

    - Top-level CLOSURE(foo, lits...) which automatically generates
      foo_closure (along with foo_info, which we were doing already)

    - Array ANONYMOUS_CLOSURE(foo, lits...) which doesn't generate
      a foo_closure identifier.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Make all closure identifiers consistently pointers, renaming the base to _static_closure.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Implement indirections, use as much as possible.

Indirection is notably not used for the fields of static closures; this
will change once we setup the runtime initialization code.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Implement runtime setup code for static closures.

This is a simple stub implementation which merely rewrites
all of the indirections into untagged pointers and untangles
references between the static closures.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>