+ Delete expired tokens from cache and generate new ones, fixes #377
Refs #369: Fix header handling during cache revalidation.
Add support for retrying failed requests with exponential backoff.

This feature can be enabled by setting the `retries` configuration for the
`Google_Task_Runner` class:

~~~php
$client = new Google_Client();
$client->setClassConfig('Google_Task_Runner', 'retries', 5);
~~~

Once `retries` is configured, the following error types will be retried by
default:

 * Errors with a `500` or a `503` HTTP status code.
 * Errors with a `rateLimitExceeded` or a `userRateLimitExceeded` reason type.
 * cURL errors:
   * `CURLE_COULDNT_RESOLVE_HOST`
   * `CURLE_COULDNT_CONNECT`
   * `CURLE_OPERATION_TIMEOUTED`
   * `CURLE_SSL_CONNECT_ERROR`
   * `CURLE_GOT_NOTHING`

These error types can be configured using the `retry_map` configurations for
the `Google_IO_Exception` and `Google_Service_Exception` classes. The retry map
is an associative array which maps errors types to the number of times each
error can be retried (-1 can be used to retry an error indefinitely). For
example:

~~~php
$client = new Google_Client();
$client->setClassConfig(
    'Google_Service_Exception',
    'retry_map',
    array(
        // Don't retry 500 errors
        '500' => 0,
        // Retry 503 errors once
        '503' => 1,
        // Retry rate limit errors until we hit `retries`
        'rateLimitExceeded' => -1,
        'userRateLimitExceeded' => -1
    )
);
~~~

For convenience, `Google_Config` provides three constants for configuring retry
limits: `Google_Config::TASK_RETRY_NEVER`, `Google_Config::TASK_RETRY_ONCE`, and
`Google_Config::TASK_RETRY_ALWAYS`.
Tame redundant tests.

All 18 test classes that extend `BaseTest` inherit the same two tests. A side
effect of this is that more than half of the assertions reported by PHPUnit
are from the same two test methods running over and over again.

I've refactored these test methods to live in more appropriate test classes.
I've also updated the `testIncludes` method to:

 * Use a data provider so all failures will be printed at once.
 * Give a nice error message instead of triggering a fatal error.
 * Use the autoloader since that's the preferred method for including classes.
Updated AdExchangeBuyer.php

This change has been generated by a script that has detected changes in the
discovery doc of the API.

Check http://developers.google.com/discovery for more info.
Updated Books.php

This change has been generated by a script that has detected changes in the
discovery doc of the API.

Check http://developers.google.com/discovery for more info.
Updated Replicapoolupdater.php

This change has been generated by a script that has detected changes in the
discovery doc of the API.

Check http://developers.google.com/discovery for more info.
Updated SQLAdmin.php

This change has been generated by a script that has detected changes in the
discovery doc of the API.

Check http://developers.google.com/discovery for more info.
Merge pull request #418 from whatthejeff/redundant-tests

Tame redundant tests.
Merge pull request #417 from whatthejeff/fix-cache

Refs #369: Fix header handling during cache revalidation.
Merge pull request #414 from eRadical/fix-expired-cached-token

+ Delete expired tokens from cache and generate new ones, fixes #377
Merge pull request #416 from whatthejeff/exponential-backoff

Add support for retrying failed requests with exponential backoff.