BUG: Categoricals shouldn't allow non-strings when object dtype is passed (#13919)
- [ ] closes #13919
- [ ] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

**Why this change is needed:** Categorical variables are by definition single types, so to allow them to take on  different types of values is misleading. Object dtypes should only be allowed when ALL strings or ALL periods are passed (due to the way there are handled internally).

**The result of this PR** will raise a `TypeError` when a categorical is created that has an object dtype but doesn't contain all `string` or all `period` values. 
