Change builtin identifier binding strategy

Previously, the environment passed to the compiler determined which free
variables would be bound.  Now, the free variables of the (anf'd) program are
used to determine which identifiers to pull in from NAMESPACE.

This gets rid of dozens of lines of extra bindings in the compiled JS of most
programs.

This does not yet work for determining which built-in libraries to include; the
bindings from list and set will always be included because the imports and
bindings are included in desugaring.