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.
Why does an `ArithmeticOverflowException` turn into an `NA` and not an `NM`? Rationale in an inline comment would be good to have.