Added custom sync strategy

Allows developers to easily write custom sync strategies for ``s3 sync``
command.
Add more customizations to sync strategies

Allow developers to make strategies for when files do not exist at the
source or when files do not exist in the destination.
Made seperate directory for  sync strategies
Cleaned up the custom sync strategy code
Merge branch 'release-1.5.1' into develop

* release-1.5.1:
  Bumping version to 1.5.1
  Add dynamodb feature to the changelog
  Add configure bugfix to the changelog
  Expand '~' in credentials filename
  Document recursive shapes
  Handle recursive shapes in shorthand parser
Delete large files for cross region ``mv``
Updated the changelog with bugfix.
Merge pull request #938 from kyleknap/multipart-mv

Delete large files for cross region ``mv``
Add issue #937 to the changelog
Fix cloudsearch define-index-field for type latlon
Update handlers with new event kwargs

In many cases, the handlers weren't actually using some
of the kwargs so it was just removing unused params in handlers.
Remove unused imports and vars in handlers

Just some code cleanup in the handlers I was modifying
for the event kwargs changes.
Merge branch 'event-args-remove' into develop

* event-args-remove:
  Remove unused imports and vars in handlers
  Update handlers with new event kwargs
Merge pull request #941 from kyleknap/cloudsearch-latlon

Fix cloudsearch define-index-field for type latlon
Renamed sync strategy class names.
Update tests based on feedback
Merge pull request #930 from kyleknap/custom-sync

Allow for easy creation of custom sync strategies
EMR: Add validation logic in steputils and clean up create-cluster and add-steps examples.

This fix adds a validation on customer provided list, which checks if the list is empty.
For example, if customers create a cluster with a command like
"aws emr create-cluster --ami-version 3.1.0  --instance-type m1.large --steps Type=Pig,Args=",
the commmand line will give the error message that "aws: error: The prameter Args cannot be an empty list.".

This commit removes Hive and Pig "Version" from create-cluster and add-steps examples.
EMR: Fix describe-cluster
EMR: Updated test for describe-cluster