Implement Categorical.searchsorted(v, side, sorter)

This closes #8420, with code that supports searchsorted in Categorical, for both side='left'/'right' and with an optional sorter. The case of side='right' was tricky, as we look to the right only when matching the category name, not when matching the codes. The docstring and unit tests cover the various cases.

One thing I wasn't sure about was forcing scalar input to a Series. I copied this behaviour from Series.searchsorted to match its docstring examples. To avoid circular imports from series.py importing categorical.py, I got Series via a local import. Probably there is a better way to do this.
ok, so easiest best is simply to use a worked out example (e.g. have a pre-computed expected case). Then create a categorical/series that should yield that and assert that they are equal. No need to iterate thru a bunch of cases.