Tablefy rewrite

I refactored all of the logic and moved it into a class instead of a 150-line function. This should be easier to work with for creating the combined interface view. I also wrote a sweet `cached_property` decorator and put it into `helpers.py`. I also got rid of `tablefy` sorting, it was really ugly and I think it was redundant with other sorting methods we've been using but I might add it back in if we need it.