Make the check for string types also work on Python 3.

Fixes #37
diff --git a/ChangeLog b/ChangeLog
index 6912eac..7be4262 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
 ~~~
 
 - First try to utf8 encode, but skip for python3. [evgen]
+- Make the checks for string type work. [Patrick Uiterwijk, Sergey]
 
 
 1.2.1 (2014-01-26)
diff --git a/flask_openid.py b/flask_openid.py
index 59cacb4..d9325bb 100644
--- a/flask_openid.py
+++ b/flask_openid.py
@@ -17,6 +17,7 @@
 import tempfile
 from functools import wraps
 from datetime import date
+import sys
 
 from flask import request, session, redirect, current_app, url_for
 from werkzeug import url_quote
@@ -102,6 +103,12 @@
     except (ValueError, TypeError):
         return None
 
+def isstring(x):
+    if sys.version_info.major >= 3:
+        return isinstance(x, str)
+    else:
+        return isinstance(x, basestring)
+
 
 class SessionWrapper(object):
     name_mapping = {
@@ -333,7 +340,7 @@
     def __init__(self, app=None, fs_store_path=None, store_factory=None,
                  fallback_endpoint=None, extension_responses=None, safe_roots=None):
         # backwards compatibility support
-        if isinstance(app, basestring):
+        if isstring(app):
             from warnings import warn
             warn(DeprecationWarning('OpenID constructor expects application '
                                     'as first argument now.  If you want to '
@@ -357,7 +364,7 @@
         if not extension_responses:
             extension_responses = []
         self.extension_responses = extension_responses
-        if isinstance(safe_roots, basestring):
+        if isstring(safe_roots):
             self.safe_roots = [safe_roots]
         else:
             self.safe_roots = safe_roots