Improve categorical concat speed by ~20x
closes #10587

before (current master):

``` python
In [1]: s = pd.Series(list('aabbcd')*1000000).astype('category')

In [2]: timeit pd.concat([s,s])
1 loops, best of 3: 573 ms per loop
```

after (this PR):

``` python
In [1]: s = pd.Series(list('aabbcd')*1000000).astype('category')

In [2]: timeit pd.concat([s,s])
10 loops, best of 3: 30.1 ms per loop
```

put the the before/after comparison at the top of the PR when you have a chance.
 guess i should change to 20x :)
 ![image](https://cloud.githubusercontent.com/assets/953992/8712983/dda4ba3a-2b30-11e5-9182-95cc67b35ca5.png)
 release note and squash :)
 looks like i'm failing
 hm weird ... fama_french url is throwing a 404
 yeh, rebase on master i just took that test out
 @jreback any more comments? (assuming travis passes)
 joy that assertion just caused 6 failures
 axis is ignored - only here for compat
 maybe `axis in [0, -1]`?
 @shoyer there's all sorts of crazy function level imports of the same function name and passing around the axis parameter. i think that consistency should be addressed in another PR
 merge on green. 

FYI, the axis parameter is not used in _any_ of the `_concat_compats`. These are all 1-d. Not 100% sure why it was originally passed in.
 hm i'm going to put the last two commits in a new PR so i can fix the category + category concatenation as well
 thanks @cpcloud 

if you want to do another PR with those other changes ok
