Stop treating DataFrames like matrices

A few weeks ago I had a very long conversation with Hadley Wickham where we debated the merits of allowing arithmetic operations on DataFrames and came to agree that it's not helpful to offer functions that work on some DataFrames (if they're all numeric), but fail on others.

This pull request attempts to push that logic to its final conclusion: DataFrames aren't matrices. They shouldn't be the objects of numeric computation and we shouldn't define operators on DataFrames that only really work for `DataMatrix{T <: Number}`.

Removing this functionality goes a long way towards simplifying our codebase and removing quirky features that we probably never use and would never encourage.

NB: **This depends upon my previous pull request.**