BUG: fix Index.reindex to preserve type when target is empty list/ndarray

This PR fixes #7774 and also includes:

TST: check index/columns types when doing empty loc/ix tests

CLN: don't _ensure_index in NDFrame._reindex_axes, it is done in Index.reindex
great catch, thanks. it *does* make sense to preserve tz, too. and probably another argument in favour of making tz a part of dtype if there will be a proper datetime dtype.