This adds the vector necessary to hold different module's namespace
bindings. We add a new tree-node 'tree_binding_vec', which contains a
sparse array, indexed by module number. To avoid space wasting, this
is allocated in clusters using 'unsigned short' as the index value (so
that's one of the upper bounds on module importing). If there are
only bindings from the current TU, there is no vector, so we have the
same representation as a non-module compilation.
To support lazy loading, a binding slot can contain either a tree (the
binding), or a cookie that the module machinery uses to load the
required binding on demand.
The first 2 or 3 slots end up being reserved for fixed meanings.
There are a couple of flags we have to record on a binding, to know
whether the same declaration could appear in two different slots.