PERF: removed coercion to int64 for arrays of ints in Categorical.from_codes
- [x] closes #18501
- [ ] tests added / **passed**
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
```
In [3]: arr = np.ones(10000000,dtype='int8')

# master
In [4]: %timeit pd.Categorical.from_codes(arr, ['foo', 'bar'])
44.2 ms ± 545 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

# after patch
In [4]: %timeit pd.Categorical.from_codes(arr, ['foo', 'bar'])
9 ms ± 54.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
```

```
       before           after         ratio
     [6d5d7015]       [fb1f7b84]
         9.24±1ms       9.94±0.6ms     1.08  categoricals.Concat.time_concat
       5.52±0.1ms      5.41±0.05ms     0.98  categoricals.Concat.time_union
       32.0±0.3ms       32.3±0.3ms     1.01  categoricals.Constructor.time_all_nan
      1.32±0.02ms      1.28±0.01ms     0.97  categoricals.Constructor.time_datetimes
      1.26±0.01ms      1.29±0.02ms     1.02  categoricals.Constructor.time_datetimes_with_nat
          354±3μs          349±7μs     0.99  categoricals.Constructor.time_fastpath
      20.0±0.08ms       20.1±0.3ms     1.01  categoricals.Constructor.time_regular
          185±1ms        186±0.6ms     1.01  categoricals.Constructor.time_with_nan
           10.1ms           10.1ms     0.99  categoricals.Isin.time_isin_categorical('int64')
      10.7±0.08ms      10.8±0.07ms     1.00  categoricals.Isin.time_isin_categorical('object')
       9.11±0.1ms       9.04±0.2ms     0.99  categoricals.Rank.time_rank_int
       9.33±0.1ms       9.37±0.1ms     1.00  categoricals.Rank.time_rank_int_cat
       9.13±0.1ms      8.97±0.05ms     0.98  categoricals.Rank.time_rank_int_cat_ordered
        141±0.9ms          136±1ms     0.97  categoricals.Rank.time_rank_string
       11.2±0.2ms       11.1±0.1ms     0.99  categoricals.Rank.time_rank_string_cat
       9.04±0.1ms       9.23±0.1ms     1.02  categoricals.Rank.time_rank_string_cat_ordered
          592±5μs          586±3μs     0.99  categoricals.Repr.time_rendering
         32.8±2ms       28.4±0.6ms    ~0.86  categoricals.SetCategories.time_set_categories
         31.8±2ms       29.6±0.1ms     0.93  categoricals.ValueCounts.time_value_counts(False)
       30.7±0.1ms       29.3±0.2ms     0.96  categoricals.ValueCounts.time_value_counts(True)
```





