vcat container and eltype promotion, internal speedups

Supersedes and closes #733.
Lots of great cleanups here. I don't follow this one. Why is `_names` needed?