ENH: Added str.normalize to use unicodedata.normalize
Derived from #9111.  Can this be considered in v0.16.1? Otherwise will change the milestone.

> [`unicodedata.normalize`](https://docs.python.org/2/library/unicodedata.html?highlight=unicodedata#unicodedata.normalize) is quite useful to standardize multi-bytes characters. I think it is nice if `StringMethods.normalize` can perform this.

```
import pandas as pd
s = pd.Series([u'ＡＢＣＤＥ', u'１２３４５'])
s
#0    ＡＢＣＤＥ
#1    １２３４５
# dtype: object

s.str.normalize()
#0    ABCDE
#1    12345
# dtype: object
```

Another point I'd like to discuss here is the condition `Index.str` can be used. Currently, `inferred_type` must be `string`. I think the preferable condition is:
- `Index` must be normal Index, not `MultiIndex`.
- Its `inferred_type` should be either `string`,  `unicode` or `mixed`.

This PR adds `unicode` currently, not `mixed`.

```
pd.Index([u'a', u'B']).inferred_type
# unicode
pd.Index(['a', u'B']).inferred_type
# mixed

# when we allow "mixed" to show str, we should exclude MultiIndex case.
pd.MultiIndex.from_tuples([('a', 'a'), ('a', 'b')]).inferred_type
# mixed
```

CC: @mortada

I never used this, but I can see this could be a useful string method (and I think it is OK for 0.16.1)

And good catch for the unicode index! (for series this did work as it allows all object types) 
Maybe add an explicit test for this? (it is now tested in your normalize tests, but for clarity?)
 > Maybe add an explicit test for this? 

Yes, added tests for `Index` to confirm it should work as the same as `Series`.
 @sinhrks thanks!
