Change Tables.rows implementation to use eachrow
Change Tables.rows implementation to use eachrow

Instead of converting to a NamedTuple of Vectors (via `columntable`). The conversion to
NamedTuple is problematic in the case of extremely wide DataFrames, and
as such is the root cause of
https://github.com/JuliaData/CSV.jl/issues/538.

The reason NamedTuple was used in the first place, however, was due to a
desire in certain querying contexts to be able to get a type-stable
row-iterator (cc: @davidanthoff ).

While this change generally follows the DataFrames.jl approach to
avoiding extreme compiler pressure, it does incur just over 2x
performance penalty on a simple manipulation like:

df |> @map({x=_.id + 1, y=_.salary * 2.0}) |> DataFrame

Perhaps it's easy enough for users who need that extra speed to just do
`columntable(df)` first before manipulating and when they know their
DataFrame has a reasonable amount of columns, but it might be possible
to automatically switch between typed/untyped representations
automatically, depending on the # of columns and pre-selected
thresholds.

JuliaStats/DataFrames.jl