ValueError when union multi-indexes with tuples as level values
I can create multi-indexes with tuples as level values and union levels:

```
>> import pandas as pd
>> pd.version.version
'0.14.1'
>> i1 = pd.MultiIndex.from_tuples([((1,2), 3), ((4, 5), 6)], names=['a', 'b'])
>> i2 = pd.MultiIndex.from_tuples([((2,2), 3), ((5, 5), 6)], names=['a', 'b'])
>> i1.levels[0]
Index([(1, 2), (4, 5)], dtype='object')
>> i2.levels[0]
Index([(2, 2), (5, 5)], dtype='object')
>> i1.levels[0].union(i2.levels[0])
Index([(1, 2), (2, 2), (4, 5), (5, 5)], dtype='object')
```

But can't union multi-indexes:

```
>> i1.union(i2)

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/core/index.pyc in union(self, other)
   3753         uniq_tuples = lib.fast_unique_multiple([self.values, other.values])
   3754         return MultiIndex.from_arrays(lzip(*uniq_tuples), sortorder=0,
-> 3755                                       names=result_names)
   3756 
   3757     def intersection(self, other):

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/core/index.pyc in from_arrays(cls, arrays, sortorder, names)
   2795             return Index(arrays[0], name=name)
   2796 
-> 2797         cats = [Categorical.from_array(arr) for arr in arrays]
   2798         levels = [c.levels for c in cats]
   2799         labels = [c.labels for c in cats]

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/core/categorical.pyc in from_array(cls, data)
    101             the unique values of `data`.
    102         """
--> 103         return Categorical(data)
    104 
    105     _levels = None

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/core/categorical.pyc in __init__(self, labels, levels, name)
     82                 name = getattr(labels, 'name', None)
     83             try:
---> 84                 labels, levels = factorize(labels, sort=True)
     85             except TypeError:
     86                 labels, levels = factorize(labels, sort=False)

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/core/algorithms.pyc in factorize(values, sort, order, na_sentinel)
    128     table = hash_klass(len(vals))
    129     uniques = vec_klass()
--> 130     labels = table.get_labels(vals, uniques, 0, na_sentinel)
    131 
    132     labels = com._ensure_platform_int(labels)

/home/lyakishev/apps/ui2_2/local/lib/python2.7/site-packages/pandas/hashtable.so in pandas.hashtable.Int64HashTable.get_labels (pandas/hashtable.c:7797)()

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
```
