Make testing style more consistent (#168)

Several overall style changes:

1.  Avoid plain `Mock()` and `Mock(spec=thing)`., prefer `mock.create_autospec()`.
1.  Don't `mock.patch` without `autospec`.
1.  Don't give mock instances special names. Prefer `thing` over `thing_mock` and `mock_thing`.
1.  When using `mock.patch`, use the same name as the item being patched to refer to the mock.
    ```python
    with mock.patch('module.thing') as thing:
        ...
    ```
    and
    ```
    @mock.patch('module.thing')
    def test(thing):
        ...
    ```
1.  Test helper factories should follow the naming convention `make_thing()`.
1.  Use `ThingStub` when creating semi-functioning subclasses for testing purposes.
diff --git a/tests/oauth2/test__client.py b/tests/oauth2/test__client.py
index 8c19c3e..6aeb3d1 100644
--- a/tests/oauth2/test__client.py
+++ b/tests/oauth2/test__client.py
@@ -22,6 +22,7 @@
 from six.moves import urllib
 
 from google.auth import exceptions
+from google.auth import transport
 from google.oauth2 import _client
 
 
@@ -46,7 +47,7 @@
 
 
 @mock.patch('google.auth._helpers.utcnow', return_value=datetime.datetime.min)
-def test__parse_expiry(now_mock):
+def test__parse_expiry(unused_utcnow):
     result = _client._parse_expiry({'expires_in': 500})
     assert result == datetime.datetime.min + datetime.timedelta(seconds=500)
 
@@ -55,15 +56,17 @@
     assert _client._parse_expiry({}) is None
 
 
-def _make_request(response_data):
-    response = mock.Mock()
-    response.status = http_client.OK
+def make_request(response_data, status=http_client.OK):
+    response = mock.create_autospec(transport.Response, instance=True)
+    response.status = status
     response.data = json.dumps(response_data).encode('utf-8')
-    return mock.Mock(return_value=response)
+    request = mock.create_autospec(transport.Request)
+    request.return_value = response
+    return request
 
 
 def test__token_endpoint_request():
-    request = _make_request({'test': 'response'})
+    request = make_request({'test': 'response'})
 
     result = _client._token_endpoint_request(
         request, 'http://example.com', {'test': 'params'})
@@ -80,16 +83,13 @@
 
 
 def test__token_endpoint_request_error():
-    response = mock.Mock()
-    response.status = http_client.BAD_REQUEST
-    response.data = b'Error'
-    request = mock.Mock(return_value=response)
+    request = make_request({}, status=http_client.BAD_REQUEST)
 
     with pytest.raises(exceptions.RefreshError):
         _client._token_endpoint_request(request, 'http://example.com', {})
 
 
-def _verify_request_params(request, params):
+def verify_request_params(request, params):
     request_body = request.call_args[1]['body']
     request_params = urllib.parse.parse_qs(request_body)
 
@@ -98,8 +98,8 @@
 
 
 @mock.patch('google.auth._helpers.utcnow', return_value=datetime.datetime.min)
-def test_jwt_grant(now_mock):
-    request = _make_request({
+def test_jwt_grant(utcnow):
+    request = make_request({
         'access_token': 'token',
         'expires_in': 500,
         'extra': 'data'})
@@ -108,19 +108,19 @@
         request, 'http://example.com', 'assertion_value')
 
     # Check request call
-    _verify_request_params(request, {
+    verify_request_params(request, {
         'grant_type': _client._JWT_GRANT_TYPE,
         'assertion': 'assertion_value'
     })
 
     # Check result
     assert token == 'token'
-    assert expiry == datetime.datetime.min + datetime.timedelta(seconds=500)
+    assert expiry == utcnow() + datetime.timedelta(seconds=500)
     assert extra_data['extra'] == 'data'
 
 
 def test_jwt_grant_no_access_token():
-    request = _make_request({
+    request = make_request({
         # No access token.
         'expires_in': 500,
         'extra': 'data'})
@@ -130,8 +130,8 @@
 
 
 @mock.patch('google.auth._helpers.utcnow', return_value=datetime.datetime.min)
-def test_refresh_grant(now_mock):
-    request = _make_request({
+def test_refresh_grant(unused_utcnow):
+    request = make_request({
         'access_token': 'token',
         'refresh_token': 'new_refresh_token',
         'expires_in': 500,
@@ -142,7 +142,7 @@
         'client_secret')
 
     # Check request call
-    _verify_request_params(request, {
+    verify_request_params(request, {
         'grant_type': _client._REFRESH_GRANT_TYPE,
         'refresh_token': 'refresh_token',
         'client_id': 'client_id',
@@ -157,7 +157,7 @@
 
 
 def test_refresh_grant_no_access_token():
-    request = _make_request({
+    request = make_request({
         # No access token.
         'refresh_token': 'new_refresh_token',
         'expires_in': 500,