API/FIX: wrap result cut/qut in Series and make it ordered

As per the discussion in #8077, the result of cut/qcut should be
wrapped into a Series, now that this is possible.

Also change the returned Categorical to "ordered=True", this was
overlooked when this was introduced in Categorical.

Closes: #8077
FIX: Categorical.unique() should return an array

As per dicussion in https://github.com/pydata/pandas/issues/8074,
Categorical.unique() should return an array and not a Index object
to make is consistant with other unique() implementations.
DOC: Mark a few more categorical methods as internal
API: Implement Series.cat.codes

Series should also expose Series.cat.codes as a Series of codes.

See discussion in
https://github.com/pydata/pandas/issues/8074#issuecomment-53992337