New mechanism for more efficient vectorization

This branch introduces a new mechanism which ends up removing the need for the call to "enumerate" and the many inefficiencies related to it in many functions.
The basic idea is this: each operation can specify an inner size and the vectorization guarantees that no vector that crosses that size will be requested.