WIP: categoricals as an internal CategoricalBlock GH5313

This PR creates a ``CategoricalBlock`` as a first class internal object, on par with blocks like ``Datetime,Timedelta,Object,Numeric`` etc.

closes #5313
closes #5314
closes #3943

TODOS

* [x]  test with ``select_dtypes`` #7434, https://github.com/jreback/pandas/commit/a43c6c041c7870c63992bc15b427adc35f7ab5d8

**Code Changes**
* [x] `factor_agg/group_agg` in `core/frame.py` -> look at unittests // a google search didn't turn up any questions/usage -> remove them?
* [x] Add a API change note about the group_agg and factor_agg
* [x] Add a API change note about Categorical.labels -> Categorical.codes
* [x] Printing level information when a Series of type categorical is printed?
* [x] Fix the remaining "FIXME" in tests 
   * [x] Groupby -> include each level, even if group is empty
   * [x] Pivotable -> include each level, even if group is empty
   * [x] `Series(categorical).describe()` / `Categorical.unique()` -> should this return all levels or only used levels?
   * [x] Series(cat).describe() -> show information about the levels?
   * [x] sort by index?
   * [x] df.to_csv: fails due to a slicer error?
   * [x] concat/append -> should retain categoricals
   * [x] concat/append -> should raise on different levels
   * [x] sorting a dataframe by a categorical variable does not use the level ordering
   * [x] sorting by a unsortable categorical should not be possible and should raise
   * [x] reorder_levels: raise if set(old_levels) != set(new_levels)?
   * [x] min/max and numeric_only=True
   * [x] df.to_hdf: fails due to `categorical.T` not implemented
   * [x] `Category.describe()` with empty levels (will be fixed with groupby)
* [x] TST: apply -> look into it if/how it works -> should probably convert first and don't try to preserve the categorical
* [x] TST: def test_sort_dataframe(self): -> sort df, cats must also be sorted!
* [x] TST: Add tests about some more numpy function that should fail
* [x] labels vs. pointers: should the (internal) name of integer array be renamed? -> I would like to see a rename to something with a underscore and it would be nice to rename it to another name (`_pointers`, `_level_idx`, `_level_pointer`)

**Documentation**
* [x] Add release notes
* [x] Add a API change note about the old constructor mode
* [x] Document the Categorical methods
* [x] Link classes/methods in categorical.rst -> not done, just a link to API docs and in special cases.
* [x] Add Categorical API to API docs

**Future**
* [ ] HDF support? -> see above... #7621 
* [ ] meta infos / "Contrasts": R's factor has a "contrast" property which indicates how this factor should be used in statistical models -> don't do it in the PR