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
pls add the issue as a comment here as well