Column Sanity

I think this PR is finally ready to be merged (+/- some things, I'm sure). It's basically an entire rewrite of the `Column` type and everything that entails. The focus for this rewrite was on speed and always forcing columns back to strict/dense version whenever possible.
Haha - so the current equals is actually completely legit. Since we always check if the 2 words are equal, the only time we could move the index out of bounds is if 1 array is a prefix of the other array. Assume one array `a` is a prefix of array `b`, they have the same size, and `a.length < b.length`. Due to the invariant that the highest order word is always non-zero, this would mean that `b` must have at least 1 more element than `a`, and therefore their sizes are not equal. So, no need to check! However, I did just realize I'm doing an equality check with xor for some reason, which is silly.