Add header support to multipart Upload Part - Copy

- Trivial change to all headers to be passed in to the
  copy_part_from_key() method and passed through to copy_key()
- Header support is required to set headers such as:
  * x-amz-copy-source-if-match
  * x-amz-copy-source-if-none-match
  * x-amz-copy-source-if-unmodified-since
  * x-amz-copy-source-if-modified-since
Update boto/cloudformation/connection.py

Extended the list of valid states.
Fix HTTP timeouts for SSL connections

CertValidatingHTTPSConnection did not implement the http.HTTPConnection timeout argument correctly.  Newer Botos appear to use this connection instead of httplib.HTTPSConnection which breaks the [Boto]/http_connection_timeout configuration setting.

This patch sets the timeout on the new SSL socket if it has been configured.
Make proxy_ssl used configured timeout

The proxy_ssl method does not use the Boto [Boto]/http_connection_timeout setting when creating its socket.  This patch will configure the requested timeout if it is set in the http_connection_kwargs parameter.
Make the port for CertValidatingHTTPSConnection actually default to 443 instead of None
ReplaceRoute action was missed. So, added.
Added keyring support.
keyring documentation
Merge branch 'develop' of https://github.com/boto/boto into develop
[MTurk CLI] Added a "notify" command.
[MTurk CLI] Allow all qualification types.
Add support for jobflow visibility

EMR jobflows now support the concept of visibility to be visible to
all IAM users within an account.  Expose the ability to query and
set this visible on a jobflow
use Decimal for numeric validate/store/retrieve
raise an exception on NaN and Infinity decimal values
Minor pep8 formatting
Fix utf-8 encoding issue for bucket lifecycle

- multi-byte prefixes need to be encoded in utf-8
  before they are sent to S3.
- Added XML declaration for the lifecycle.
- Added unit test to set and retrieve a bucket config which
  demonstrates the utf-8 issue.
- Note: AWS doesn't seem to work properly when retrieving
  the Japanese prefix. It comes back garbled. The request
  is however sending correctly encoded utf-8 according to
  a packet trace. I've left the final Assert commented out
  in the test case until AWS fixes the issue.
Count/ScannedCount support for dynamodb.layer2.(scan|query)
add count argument to dynamodb.layer1.query()
fix consumed_units to match Amazon return value (float)
add value to get/set remaining generator iterations
add ability to jump ahead in result set pagination
add ability to query for meta-data values before iterating
oops; fixing broken max_results=0 behavior
Support Expiration date in bucket lifecycle object.

Changed the expiration parameter to be similar to the transition
parameter. It is now an object. The methods still take an
integer number of days but any code that looks directly at
the value of rule.expiration and expects it to be an integer
will now fail :-( Not sure how to make the transition smoother.

Added a unit test to test multiple rules together.
Add toggle to use Decimals with DynamoDB Layer2

The gist of this change is to refactor the
serialization/deserialization of python types to the format
that the dynamodb expects into a single "Dynamizer" interface.

This interface is then plumbed into Layer2 and can be passed in
via the __init__.  This also allows users to entirely override
this process if they need.

I implemented two types of Dynamizers:

* Dynamizer - Uses Decimals to handle numeric types.
* LossyFloatDynamizer - Uses int/float to handle numeric types.

I made the default dynamizer the LossyFloatDynamizer which will
maintain backwards compatibility (all of the dynamodb tests pass).

If a user wants to use decimals, they can either pass in the
appropriate dynamizer:

  dynamodb = boto.connect_dynamodb(dynamizer=Dynamizer)

or use the `use_decimals` convenience method::

  dynamodb = boto.connect_dynamodb()
  dynamodb.use_decimals()

If a user wants to customize this process, they can subclass
Dynamizer and either override `encode` or `decode`, or they
can override a specific conversion.  For example:

  class UnicodeDynamizer(Dynamizer):
    def decode_s(self, attr):
        return unicode(attr)

  dynamodb = boto.connect_dynamodb(dynamizer=UnicodeDynamizer)

I've added unittests/integration tests for the new functionality.