Less copying of colnames throughout internals.

Added an internal _names(df) function to replace names(df) where the implicit
copy was unhelpful. Replaced almost every occurence, which would suggest
swapping meanings and using copy(names(df)) in those couple places, except
that that would make downstream code perhaps too subtle.
Create Index directly from Index(es) where applicable
Make vcat(dfs) do container & eltype promotion
Clean up whitespace
Merge pull request #747 from garborg/vcat2

vcat container and eltype promotion, internal speedups