DOC/PY3: Python 3 docs example compat for range, StringIO and datetime
related is #6212

Fixes examples in documentation to be compatible with Python 3. Also tested it locally under Python 2.
- Turned occurrences of `(x)range()` to `range()` for iteration and to `list(range())` for  list concat.
- Fixed leading zero argument(s) as in e.g. `datetime(2013, 01, 27)`.
- Removed explicit `StringIO` and `cStringIO` imports in examples (uses suppressed pandas.compat imports) and added a note on py2/3 library reorganization.
- Fixed `StringIO` for binary data to the more explicit `BytesIO`.
- Fixed `NameError` for missing `pd.` in `pd.Series`.
- Added note for failing `numpy.unique` example, see also #6229.  

I am not sure about the `BytesIO` though. Maybe good to put a note saying this is Python 3 way to do it and users on 2.x should use the old `StringIO` instead. In general, should we favor Python 3 doc versions in such cases and add notes for Python 2.x users? What do you think?

seems ok to me...@y-p ?
 Is the conversion of `xrange()` to `list(range(..))` necessary? Why not just to `range()`? 
This works both on both python 2/3 in a list comprehension, and seems easier.
 as long as the `pandas.compat` imports are limited to wrappers for known classes
it's not a problem. Looks fine.

Wherever the code does not explicitly require a sequence for random access e.g. foo[4],
the `list(range(foo))` is not required as joris pointed out.
 yep you can just use range (if u r iterating over it)

use list(range) if you actually need a list
 Adapted.
 If this looks ok to you now, I could go ahead and squash...
 go ahead and squash 
 done.
 @phaebz , please get rid of all the `list(range())`` where not required, I think that's
everywhere.
 @y-p regarding the PR, I think it is OK now. The remaining list in `list(range(1,24))+[np.NAN]` is needed for being able to add the nan. 
But elsewhere in the docs there will be still some unneeded `list(range())`s, but that can maybe be left for another PR.
 You're right, good. merging.
