ENH: Add `categorize` method to Categoricals
I may be missing an existing method here. Didn't see anything though...

Given a Categorical

``` python
In [10]: s = pd.Series(['A', 'B', 'C', 'A'], dtype='category')

In [11]: s
Out[11]:
0    A
1    B
2    C
3    A
dtype: category
Categories (3, object): [A, B, C]
```

And some codes, `new_codes = pd.Series([0, 1, 0, 2], index=[4, 5, 6, 7])`, I'd like to easily categorize the new codes. I think this is essentially

``` python
In [22]: catmap = dict(enumerate(s.cat.categories))

In [23]: new_codes.map(catmap).astype('category')
Out[23]:
4    A
5    B
6    A
7    C
dtype: object
```

That's not quite the same (what if `new_codes` doesn't have every code from `s`, then it's "missing"? need to make sure the categories / codes are identical), but the basic idea is there.

---

My use-case here is going from Categorical -> codes -> scikit-learn classifier -> prediction (codes). It'd be nice if the column could easily transform that result back.

Naming wise, I'd say `categorize` or `decode`. Should we also add the symmetrical `encode` method for `category` to `code`?

If `new_codes` contains a previously unseen `code` I'd say raise, or maybe insert nan (perhaps an option here?)
