Require symbols to be initialized.

It is mandatory for all symbols to be initialized before their containing
scope exits. At that point we'll bake in the symbol's type to be
henceforth unchanging, so that it isn't subject to being "merged" into
any parent data state, where it would get corrupted since the parent
state doesn't know the symbol's type.
Give a better error message for a never-initialized variable.

Previously we had a custom error message for an ambiguously-initialized
variable but not one for a definitely-not-initialized variable. Now we
have a nice error message for that case too.