REF: reindex_indexer use np.void to avoid JoinUnit
ATM we do a kludgy thing where we sometimes reindex before calling concat (e.g. in DataFrame.append) and that leads to all-NA columns that we choose to ignore when choosing the dtype for the concatenated column.  This leads to a) funky behavior when we encounter an "real" all-NA column and b) a big performance hit in checking for all-NA columns.

Instead of doing that, this PR implements the keyword use_na_proxy (chosen to match ArrayManager's keyword) that ends up creating ndarrays with np.void dtype instead of all-NA float64 ndarrays.

This will allow us to simplify a bunch of code in internals.concat (e.g. get rid of case where `unit.block is None`) and improve the funky behavior mentioned above.  Both of these are left to follow-ups to keep the diff manageable.
greenish, just test_to_csv_compression_encoding_gcs