Speedups, bugfixes, and fleshing out current AbstractDataFrame API

@tshort The third commit is the one of interest, where I shuffled around code between DataFrame and AbstractDataFrame, and fleshed out a transient interface
Also driven by SubDataFrame -- it doesn't seem like something to provide out of the box for a ADF that is a window into a tiny bit of a larger object which would need to be serialized as well or something else more complicated than exists now. `save` could convert to a DataFrame, but I was thinking it would be better to be explicit at least for now. Again, it seems appropriate for all or some of the concrete types that fall under hypothetical new abstract type thats <: AbstractDataFrame.