Start fixing how boto and our url fetching can not
use ssl correctly (they can not do validation due to 
the underlying usage of urllib/httplib). Adjust to
use urllib3 which can in cloud-init url fetching. For
now also take the metadata/userdata extraction code
from boto (small amount) and fix it in a new local file  
called 'ec2_utils'.
Remove the need for boto just for fetching the 
userdata and metadata. Add in this crawling functionality
to the ec2_utils module that will fully crawl (not lazily)
the ec2 metadata and parse it in the same manner as boto.

1. Make the ec2 datasource + cloudstack now call into these.
2. Fix phone_home due to urllib3 change (TBD)
Use the python requests lib instead of urllib3
since it provides the same support (and it uses
that library). Urllib3 doesn't seem to exist as
its own package (requests hides it) so solve that
by using requests and handling its oddness ourself.
Fix the requires after using requests.
Fix the checking and capturing of exceptions.
More cleanups for using the requests module.

1. Handle our own retries (so that we can sleep in between)
2. Cleanup the url so that partially invalid (no scheme) urls
   will continue working.
3. Allow redirects option now a param.
Continue working on integrating requests.
More work on requests integration.
Update to code on trunk.
Why did this file showup.
Get tests working and further adjustments.
Fix the maas callback mechanism now that requests is used.
Update to handle requests >= 1.0 which doesn't use the config dict.
Fix how the http error doesn't always have the response attached
in earlier versions of requests (pre 0.10.8).
merge from trunk at revno 799
pylint fixes

a.) appease pylint on raring, as it doesn't like subprocess
    pylint: 0.26.0-1ubuntu1
    This is mentioned in comments at http://www.logilab.org/ticket/46273

b.) tests/unittests/test_util.py:
    the mountinfo lines are longer than 80 chars.
    Just disable long lines complaints for this file.
merge from trunk rev 800
appease pylint and pep8

* cloudinit/distros/parsers/resolv_conf.py
  added some pylint overrides with 'plXXXXX' syntax.
  example:  # pl51222 pylint: disable=E0102

  The pl51222 there means: http://www.logilab.org/ticket/51222

  This specific issue is present in 12.04 pylint, but not 13.04.

* pylint doesn't like the requests special handling we have.
  which makes sense as it is only checking versus one specific version.
* general pep8  and pylint cleanups.
do not bother retrying on ssl errors

if the error is an ssl error, its extremely unlikely that it would be fixed by
waiting a few seconds and trying again.
set 'allow_redirects' to True by default

the previous implementation of url_helper.readurl() would default
to allow_redirects being true.

So, for backwards compat, we should keep that behavior.