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.
Move ec2 test_instance to unit tests

Its testing the parsing of an xml response and
does not talk to any external services.
Tag the existing integration tests with service names

I've added the following service name tags that should be
compatible with the previous '-t' arg:

* s3
* ssl
* s3mfa
* gs
* sqs
* ec2
* autoscale
* sdb
* dynamodb
* sts
* swf
Update contributing/test docs to document '-t' arg
Default service-tests args to an empty list
Filter out non default tests if '-t' arg is not specified
Add a test for an invalid xml schema

That is, the xml is valid, but the schema is not
what we expect.
Move test_expire into unit test directory
Use boto.exception for checking expirations

The exceptions in boto.exception are able to parse
all of the "credentials expired" messages, so those
classes are used to check whether or not credentials
are expired.  This removes the usage of ElementTree
and StringIO.

I ran the s3 integration tests against 2.6 and 2.7 and
they're passing for me.
import ResultSet and Tag in ec2/volume.py for startElement in Volume class
add unit tests for ec2/volume.py Volume class startElement function
add tests for endElement method on Volume
add tests for update, delete, and attach methods
add tests for detach, create_snapshot, volume_state, and attachment_state methods, change all assertEquals to assertEqual for consistency
add snapshots method tests, AttachmentSetTests, and VolumeATtributeTests
standardize strings to use double quotes, and dictionary keys to use single quotes