BUG: union_categoricals can't handle NaN
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew not needed

`union_categoricals` doesn't handle `NaN` properly.

**on current master:**

```
from pandas.types.concat import union_categoricals
union_categoricals([pd.Categorical([np.nan, 1]), pd.Categorical([2, np.nan])])
# [1, 1, 2, 2]
# Categories (2, int64): [1, 2]

union_categoricals([pd.Categorical([np.nan]), pd.Categorical([np.nan])])
# IndexError: cannot do a non-empty take from an empty axes.
```

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13759?src=pr) is 84.57% (diff: 100%)

> Merging [#13759](https://codecov.io/gh/pydata/pandas/pull/13759?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will increase coverage by **<.01%**

``` diff
@@             master     #13759   diff @@
==========================================
  Files           141        141          
  Lines         51195      51200     +5   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          43295      43300     +5   
  Misses         7900       7900          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [9f94e6a...ab99976](https://codecov.io/gh/pydata/pandas/compare/9f94e6a04564e8269b43c5b4e83854d277ea30bd...ab99976f4a29e9291e525a50549f5f37456b92b6?src=pr)
 lgtm. 

cc @chris-b1 
 Yeah, I had actually fixed this in #13406 too - this PR fixes some other corners I missed.  I used `take_1d` with a fill value, which seems to be a little faster?

``` python
In [13]: cats = [pd.Categorical(list('abcdefghijkl') * 100) for _ in range(100)]

In [14]: union_categoricals_pr = pd.types.concat.union_categoricals # from 13406

In [15]: def union_categoricals_sinhrks(to_union):
 <snip - this pr>

In [16]: %timeit union_categoricals_pr(cats)
100 loops, best of 3: 2.78 ms per loop

In [17]: %timeit union_categoricals_sinhrks(cats)
100 loops, best of 3: 3.45 ms per loop

```
 @chris-b1 thx, changed to use `take_1d`.
 Looks good to me, go ahead with merging if ready!
