Reducing memory footprint for catagoricals
python uses 32 bytes for every int.
numpy uses 4 bytes for an int32 (with which you can index billion of keys).

We currently have a hardwired if preventing single-level multi-indexes,
which would allow us to take advantage of factorization to reduce memory
consumption by ~8x for indices which have lots of duplicates.

Indexes tend to be unique (by their nature). But the same principle goes
for string columns which are often highligh degenerate.

Basically, if we store catagorical data as catagorical, we can
reduce memory footprint drastically. If we do the factorization 
at the stage where data is read in (perhaps in conjuction with the iterator based 
reader planned for 0.14  https://github.com/pydata/pandas/issues/2193) we can drastically reduce the peak memory usage as well.

Update: https://github.com/pydata/pandas/issues/5313
