Add support for the GCLOUD_PROJECT environment variable (#73)

diff --git a/google/auth/_default.py b/google/auth/_default.py
index 356780b..b6014e7 100644
--- a/google/auth/_default.py
+++ b/google/auth/_default.py
@@ -254,7 +254,9 @@
             If no credentials were found, or if the credentials found were
             invalid.
     """
-    explicit_project_id = os.environ.get(environment_vars.PROJECT)
+    explicit_project_id = os.environ.get(
+        environment_vars.PROJECT,
+        os.environ.get(environment_vars.LEGACY_PROJECT))
 
     checkers = (
         _get_explicit_environ_credentials,
diff --git a/google/auth/environment_vars.py b/google/auth/environment_vars.py
index 9785c34..b4ed2b2 100644
--- a/google/auth/environment_vars.py
+++ b/google/auth/environment_vars.py
@@ -22,6 +22,13 @@
 environment variable is also used by the Google Cloud Python Library.
 """
 
+LEGACY_PROJECT = 'GCLOUD_PROJECT'
+"""Previously used environment variable defining the default project.
+
+This environment variable is used instead of the current one in some
+situations (such as Google App Engine).
+"""
+
 CREDENTIALS = 'GOOGLE_APPLICATION_CREDENTIALS'
 """Environment variable defining the location of Google application default
 credentials."""
diff --git a/tests/test__default.py b/tests/test__default.py
index e244b3d..c33db13 100644
--- a/tests/test__default.py
+++ b/tests/test__default.py
@@ -268,6 +268,15 @@
 
 @mock.patch(
     'google.auth._default._get_explicit_environ_credentials',
+    return_value=(mock.sentinel.credentials, mock.sentinel.project_id))
+def test_default_explict_legacy_project_id(get_mock, monkeypatch):
+    monkeypatch.setenv(environment_vars.LEGACY_PROJECT, 'explicit-env')
+    assert _default.default() == (
+        mock.sentinel.credentials, 'explicit-env')
+
+
+@mock.patch(
+    'google.auth._default._get_explicit_environ_credentials',
     return_value=(None, None))
 @mock.patch(
     'google.auth._default._get_gcloud_sdk_credentials',