detect string in a way that works with both Python 2.x and 3.x

This is how the six package detects strings (see http://stackoverflow.com/a/20612311/81346)