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
this might fail for a DatetimeIndex with a tz
you can preserve with d=self._get_attributes_dict() to grab the meta data (incl the name); but set d['freq']=None (works for all index types as extra kwargs are ignored)