Add multi_az and auto_minor_version_upgrade to restore_dbinstance_from_dbsnapshot
Add support for lazy-loading metadata
Add __str__ and __repr__
Remove extra accidental addition of boto.rds
Use self.materialize and super instead of reimplementing
Add MFA serial number and token to create_session_token method.
A couple of PEP8 fixes.
implement equality comparison for dynamodb conditions to ease testing
Initial work for provisioned IOPs.
Updates for provisioned IOPS.
Updated doc strings.
Improvements to bin/elbadmin

PEP8
Add reap command to remove terminated instances from an ELB
find_elb function to reduce code repetition
Improved usage sanity checks for create, addl, rml
_get_instance_metadata: quote components in url requests

This addresses Issue 659 by having urllib.quote escape each component of the
metadata in a url before making the request.

This issue was seen in a openstack metadata where some user supplied strings
(specifically, 'keyname') contained spaces and were presented as a key in
the metadata service.  That caused boto to make invalid requests to the server
when trying to crawl those fields.

Some things to note about this change:
 * '/' and ':' are explicitly not escaped.  The mac addresses presented
   in 'macs' field will have a : in them, so that is ignored.
 * only portions of the metadata service returned are escaped.  The initial
   url passed in will not be modified.
 * At this point I'm not aware of any actual content in the EC2 metadata
   service that would need escaping.
Merge branch 'hotfix-2.5.1'
Allow the HTTPResponse to be reread multiple times

There are potentially multiple things that would like
to process the returned HTTPResponse (error checking,
credential expiration, error class creation).  However,
the first thing to call response.read() will see the response,
subsequent calls to response.read() will return, as expected,
an empty string.

This proposed fix is to cache the body of read() and return
the full body whenenever anyone calls read().  Admittedly, this
is not the most elegant way to do this, but the upside is that
this is a minimally invasive change.

This behavior is only enabled when there is no size passed to the
read() method.  This ensures that any code streaming the response
in chunks remainins unaffected (from what I could tell, the keys
module in s3 is the only module doing this).

I've also added an integration test for this.  This is the specific
error that was reported on the boto-dev mailing list, which was that
a 400 response from s3 did not have the S3ResponseError.error_code
populated.  With these new changes, the test now passes.
Cleanup mturk testes to have no import time side affects

This interferes with nose's test discovery because it
will try to introspect modules looking for tests, which requires
importing the modules.
Move devpay tests to a test() function

Running the test is placed in an
if __name__ == '__main__' so that there are no
import time side effects.
Move fps tests into a test() function

Prevent import time side effects.
Add '-t' arg for backwards compatability

This attempts to preserve the '-t' option from the
pre-nose runner switch in test.py (e62525b).  It does this
by using the nose attrib plugin to run tests tagged with
various attributes.  For example, '-t s3' will run any
test tagged with s3 and also not tagged with 'notdefault'.

In future commits I'll go through and tag the various tests
with these service attributes.
Change to UTF-8 encoding for ACL content