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.

can u add a 0.14.1 pickle as well for back compat testing (and add to the legacy pickle generation script) thxs
 can you also add an explicity pickle of a `pd.Categorical` from 0.14.1, see here: https://github.com/pydata/pandas/blob/master/pandas/tests/test_index.py#L273
needs to go in `tests/data/pickle_name.pickle` to be picked up (better name clearly :)

and put this in a test in `tests/test_categorical.py`
 @immerrr I pushed a commit to provide 014.1 pickle compat (didn't have a setstate for some reason). Need a few tests for this though. https://github.com/immerrr/pandas/pull/2
 Yeah, thanks, it will probably have to wait for several of hours...
 np

important that this is right

was an oversight 
 @immerrr ?
 On it. Had a blackout at home last night so couldn't do anything useful. 

~~I've added a test and cherry-picked your commit on top. I get a weird error:~~
~~...~~
~~I wonder if this happens because Index is no longer a subclass of ndarray...~~

_EDIT: disregard that, I've forgotten to use `pd.read_pickle` instead of `pickle.load`._
 ~~deleted~~
 you can't use pickle.load(), see here: http://pandas-docs.github.io/pandas-docs-travis/io.html#io-pickle

use pd.read_pickle()
 Squashed and added some final touches, have a look.
 @immerrr looks good 2 me. ping when green.
 @immerrr thanks! gr8 as usual!
