Don't unneecessarily assing NA when constructing empty DataFrames

I was reading through the DataFrames code trying to familiarize myself with it when I noticed that some of the empty DataFrame constructors loop through every value in the DataFrame and setting it to NA. This is unnecessary since the DataArray constructor already sets every value to NA on construction. This gives on the order of 1000x performance improvement. 

I also added some tests to make sure the constructed DataFrames really are all NA.