Update AbstractDataVector append!

Allow appending to itself. This also allows DataFrames to be appended to themselves. Previously calling append! with two references to the same DataVector would add NAs to the end, and this would corrupt DataFrames when calling append! with two references to the same DataFrame.