Merge branch 'release-0.15.0'

* release-0.15.0: (88 commits)
  Bumping version to 0.15.0
  Set a stream logger with level=ERROR by default
  Change s3 to s3api
  Remove part about put-object using multipart
  Change complex params to updated casing
  Split the pager command to account for any options the user has specified.  Fixes #237.
  Removed unnecesssary statements in unit test code.
  Adding a unit test to ensure that the correct events are fired when the create_help_command methods are called as they are when creating the HTML docs.
  Try to parse response as json in smoke test
  Add smoke test for json services
  Moving the firing of the building-command-table.* event to ensure parity between MAN and HTML docs.
  Allow top level commands to be renamed
  Use the command table names for operation help
  Move s3api example into examples dir
  Use the command name for the event_class
  Update help output test in s3 customizations
  Add debug log for location of example file path
  add examples for the base s3 command set . . . it isn't so bad really
  Remove metric.json
  Fix s3 with latest develop change for example paths
  ...
Merge branch 'release-0.16.0'

* release-0.16.0: (41 commits)
  Bumping version to 0.16.0
  Remove duplicate link targets that conflict with model docs
  Fixes for Pull request review comments. Removed rds/create-db-instance.rst for now, until the original writer fixes it.
  Updated samples for all services.
  Updated examples!
  Fixed some links in the README file.
  Corrected ReST line length
  Replace "complex" with JSON
  Add cloudfront as a preview service
  Add test for list of scalar complex param
  Add docstring
  Updating a few integration tests that were looking for specific error output which has changed with new approach.
  Add extra test for boolean arg merging
  Add group_name to arguments
  WIP commit.
  Move s3 concepts dir into examples directory
  A WIP commit on an event-based error handler.  Needs tests, etc. but would appreciate review of basic approach.
  Fix failing integ tests from #277
  Update test to reflect latest doc changes
  Updated documentation
  ...
Merge branch 'release-1.0.0'

* release-1.0.0:
  Bumping version to 1.0.0
  Pull regions and output choices from JSON data.  Remove sys.exit() call.
  Fixed a Python 3.x issue.
  Fixing a couple of PEP8 issues.
  New completer that is driven from the domain model rather than the low-level model.
  WIP Commit.
  WIP commit
  Add a doc string to all --dry-run options.
  Remove ddb rename of scan-index-reversed
  Add additional arg renames
  Unregister event handler after docs are rendered
  Add rename arg handler
  Update integration test to check for content type
  Add arg to disable mime type guessing
  Update s3 high level to guess mime type of files
Merge branch 'release-1.1.0'

* release-1.1.0: (62 commits)
  Bumping version to 1.1.0
  Remove duplicate link targets from IAM examples
  Fix the xmlns for the GetPasswordData response.
  Adding a couple more params to test.
  Breaking out all of the params buried under --params into first-class options.
  Switch py2exe includes to packages
  Cap the task queue size to a fixed amount
  Bump rsa version to latest version
  Use communicate instead of wait
  Remove old multipart upload code
  Add unit test for --content-type parameter.
  Add possible choices for param name to help text.
  Changing headers to params and changing syntax to match shorthand syntax rather than modeling after HTTP headers.
  Added new s3api samples from Peter Moon
  Abort multipart uploads in progress
  Fix issue with test on Python 2.6.
  Add --grants plus a few other options.
  WIP commit.  Add a number of new options to s3 cp, mv, sync commands to specify SS3, website redirect, storage class, and additional HTTP headers.
  Add ability to cancel upload in context object
  Always call task_done() even if we can't print
  ...
Rework s3 command tests

This reworks the s3 integration tests that run the
s3 command.  It makes two major changes.

1) Tests are more self contained.  There's no more implicit state
   from helper functions you have to track down.  Each test shows
   what objects it creates
2) Verification is done at the botocore level rather than at the
   s3 cli level.  This way we're using an alternate means to validate
   the tests.

The overall goal is to make it easier to add these types of tests so
we can have a high coverage for these "acceptance" tests.
Python 3 fixes, decode to utf-8
Add test for image/png content type

cc @toastdriven.
Merge branch 's3-test-cleanup-r1' into develop

* s3-test-cleanup-r1:
  Add test for image/png content type
  Python 3 fixes, decode to utf-8
  Rework s3 command tests
Use multipart uploads when necessary with mv command

Fixes #369.

The issue here was that the 'mv' command was not being tested
for multipart uploads so any time you used a 'mv' command we'd always
try to use a single PutObject operation.

The fix boils down to the `_is_multipart_task` method which shows
when something is a multipart upload task.

Long term I think most of this logic will be refactored into it's own
separate class but this fixes the issue for now.

Also, a 'mv' command was implemented as a 'cp' command plus a removal
of the local file.  This required a small update to the
MultipartUploadContext object that allowed for threads to wait on the
completion of a multipart upload.  There's a new RemoveFileTask object
that will only run once the associated multipart upload task is
complete.

Verified the `mv`'ing a multi GB file keeps memory usage under 200 mb.
Fix test on windows

A png file is guessed as image/x-png sometimes, as windows has
mime type info pulled from the registry.

Using an extension of jpeg, which works the same on all the platforms.
Don't assume utf-8 for stdout/stderr

In other words, fix tests so they run on windows properly.
Look for encoding of original stdout

As things like nose plugins can swap out sys.stdout
with StringIOs which don't have encodings.  Verified
this passes on windows with nose plugins enabled.
Account for case where encoding is defined and None

This ensures that encoding is never the value `None`.
Remove unicode tests with quiet flag

Don't try to print unicode output in CI environments.
Merge branch 's3-multipart-move' into develop

* s3-multipart-move:
  Use multipart uploads when necessary with mv command
Add tests for multipart downloads via cp/mv commands
Port range downloads into new implementation

Eagerly add the parts to the queue.  This required
creating a context object to track dependent task state,
similar to what was done for uploads.

I also noticed that we weren't cleaning up bad downloads
appropriately either so I've added code to clean partially
complete downloads.

The old multipart code has been removed.
Remove the remaining parts of the old multipart implementation
Remove unused stdout.flush() call
Remove unused .flush() call