Stronger scope checking in SSA and SSA2 ILs.

This commit makes two improvements to the scope checking of SSA and
SSA2 programs.

The first improvement is to record the function in which an entry is
defined.  Then, when checking the use of a func/entry pair, we check
that the func is defined, the entry is defined, and that the function
in which the entry is defined is the same as the func being used.

The second improvement is to limit the scope of entry arguments to
dominator trees (in the dominator forest) whose root is uniquely the
start block of the entry.  Consider the following SSA function:

fun F =
 entry E1 (a1) = L ()
 entry E2 (a2) = L ()
 entry E3 (a3) = L3 ()
 L ()
   L4 ()
 L4 ()
   ...
 L3 ()
   ...

Note that the domintor forest is:

 L{L4{...},...}
 L3{...}

Note that L is the 'start' block of both E1 and E2; since control may
reach L via either E1 or E2, neither a1 nor a2 is in scope in the
dominator tree rooted at L.  On the other hand, L3 is the unique
'start' block of E3; since control may reach L3 only via E3, a3 is in
scope in the dominator tree rooted at L3.

Both of these improvements should be made to the scope checking of
RSSA programs, but the scope checking of RSSA programs is setup
somewhat differently.