PERF: faster categorical ops for equal or larger than scalar
np.nan is always encoded to -1 in a Categorical, so encoded smaller than all other possible values.

So, if we're checking if a Categorical is equal or larger than a scalar, it is not necessary to find locations of -1, as those will always be False already.

### Performance

```python
>>> n = 1_000_000
>>> c = pd.Categorical([np.nan] * n + ['b'] * n + ['c'] * n,
                       dtype=pd.CategoricalDtype(['a', 'b', 'c']), ordered=True)
>>> %timeit c == 'b'
9.79 ms ± 32.4 µs per loop  # master
3.94 ms ± 38.7 µs per loop  # this PR
# the improvement isn't available for less than etc. ops
>>> %timeit c <= 'b'
10.1 ms ± 44.1 µs per loop  # both master and this PR
```
thanks @topper-123 