0.2.0
   Added support for Google Auth.

   Added experimental support for HMACDigest.  

   Added support for a pluggable caching system. Now supports
   the old system of using the file system and now memcached.

   Added httplib2.debuglevel which turns on debugging. 

   Change Response._previous to Response.previous.

   Addded Http.follow_all_redirects which forces
   httplib2 to follow all redirects, as opposed to 
   following only the safe redirects. This makes the
   GData protocol easier to use.

   All known bugs fixed to date.

0.1.1

    Fixed several bugs raised by James Antill:
    1. HEAD didn't get an Accept: header added like GET.
    2. HEAD requests did not use the cache.
    3. GET requests with Range: headers would erroneously return a full cached response.
    4. Subsequent requests to resources that had timed out would raise an exception.
    And one feature request for 'method' to default to GET.

    Xavier Verges Farrero supplied what I needed to make the 
    library work with Python 2.3.

    I added distutils based setup.py.

0.1 Rev 86 
    
    Initial Release

