assignment type check & shadowing rules

Inner-scope assigns cannot change types (probably a mistake).
Outer-scope assigns actually define a new local var & shadown.
Unknown var uses give better error msgs.
ncol/nrow require an array
Top-level exec takes a statement list.
Revamp grammer rules to allow cascading function applications