An attempt at rewriting the columnization into a single phase. After
spending a few days on this, I am still unsure if it can be salvaged or
if the algorithm is broken. I will attempt to backport bug fixes, utility
functions and the concept of nominal types, and abandon the rest for now.