BUG: fix CategoricalBlock pickling

This should fix #8518.

Apparently, `NonConsolidatableMixIn.__init__` was copied from a pre-`BlockPlacement` version of `SparseBlock.__init__` which was incompatible with placement being a slice.  The current one is, so I moved it to NonConsolidatableMixIn class almost verbatim.
levels and labels are gone in 0.15
use categories and _codes