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.
duh! wasn't really looking at it! (side issue - we have BOTH module level and TestCase level functions for some of the comparators...I think their is an issue out there somewhere)

e.g. you can do ``tm.assert_series_equal`` but not ``self.assert_series_equal``...but ok with the cat test changes