More Python 3 fixes

This is a work in progress, and I am aiming to try and get the test suite to pass in Python 3.

Related issues:

* 
https://github.com/scikit-image/scikit-image/issues/1187

* https://github.com/numpy/numpy/issues/5145
* https://github.com/astropy/astropy/issues/3013

(jeez, this is turning out to be quite the bug hunt)
I'm not sure if I agree with @JudoWill about raising an error here. If a user passes a pandas series of strings into glue, it will be of dtype=object. Raising an error for that case is annoying. 

Actually, if the only issue with mixed types is the call to numpy.unique, it looks like pandas.factorize handles mixed types in python3:

```
In [19]: x = np.array([1, 1, 3, 'hi', 'hi', 3], dtype=object)

In [20]: pd.factorize(x)
Out[20]: (array([0, 0, 1, 2, 2, 1]), array([1, 3, 'hi'], dtype=object))

In [21]: np.unique(x)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-9a478241c930> in <module>()
----> 1 np.unique(x)

/Users/beaumont/anaconda/envs/astropy3/lib/python3.3/site-packages/numpy/lib/arraysetops.py in unique(ar, return_index, return_inverse, return_counts)
    193         aux = ar[perm]
    194     else:
--> 195         ar.sort()
    196         aux = ar
    197     flag = np.concatenate(([True], aux[1:] != aux[:-1]))

TypeError: unorderable types: str() > int()
```

Since pandas is a required dependency of Glue anyways, I know think it might be best to change the `_update_categories` method, and keep mixed types unless there's another roadblock. 

I can make this change if you want (we probably need to use pandas instead of np.searchsorted in `_update_data` as well)