Capture the stack context of gen callbacks as they are generated.

This guards against functions that add their own stack context
without wrapping their callbacks.
Use native strings instead of byte strings for oauth responses.
On python 3, json_encode no longer supports byte strings as input.

This matches the behavior of the underlying json library.
recursive_unicode was more expensive than the actual json encoding for
complex structures, and was useless on python 2.