Implemented the "Void"-based typing of various combinators, in an attempt
to make "lint" be a real linter (not a unifier), and to avoid the need for
introducing unification variables from splicing in computations. This patch
also enables more localized rewriting when vectorizing.