Refactor: ColumnAggregator accepts and produces only DataFrame

Previously, the ColumnAggregator was a mess. It's still a mess, but I hope it's
now a clearer and easier-to-use mess. The documentation is greatly expanded and
the functionality is expanded too, allowing users to select only a certain
column name for aggregation. Thusly users may input a DataFrame with a
MultiIndex and still get meaningful results.

Working toward #281