WIP: generalize categorical to N-dimensions
closing until I make more progress
 Maybe put in the `_finalize...` thingies which are used in pandas/numpy? Each method would need a change to call finalize then on new categoricals...
 @shoyer so you want an n-dim codes array (rather than 1-d). How would this be used?
conceptually this is the 'same' as a DataFrame of categorical series (that maybe share levels, for 2-d). What is your usecase for this (aside from xray)?
 @jreback I expect that allowing for n-dimensional categoricals could lead to much higher performance for a DataFrame with multiple columns of the same type, in the same way that multi-dimensional arrays are positive for performance for other dtypes.

e.g., you could call `unstack` on a Categorical series essentially for free (since it's just a numpy reshape under the covers). (though I'm not sure enough about the pandas Block system to be sure about this)
 @shoyer ok, that is reasonable. And in fact right now `Categoricals` are kept in completely separate blocks regardless of their internal structure. It _is_ possible to combine them, so your soln would make sense.
