PY3: use six.BytesIO and six.moves.cStringIO
use .seek(0) instead of reset() for compatibility

Since I don't find docs for the .reset() method, I lookup up the source
code, and it should work just the same as .seek(0).

For reference:
https://github.com/python/cpython/blob/8eeb7e9122109f5cc71c22047d5cdd312ca770a0/Modules/cStringIO.c#L281
use io.BytesIO and cStringIO instead of six.BytesIO as suggested
fix tests by using a tempfile instead of BytesIO
get_func_args maximum recursion fix #728
Merge pull request #809 from nramirezuy/get_func_args-728

get_func_args maximum recursion fix #728
Merge pull request #803 from felixonmars/py3-port

[MRG] PY3: use six.BytesIO and six.moves.cStringIO