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
Fix cloudsearch define-index-field for type latlon
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
Updated Changelog with new features.
Bumping version to 1.5.2
Merge branch 'release-1.5.2' into develop

* release-1.5.2:
  Bumping version to 1.5.2
  Updated Changelog with new features.
  EMR: Updated test for describe-cluster
  EMR: Fix describe-cluster
  EMR: Add validation logic in steputils and clean up create-cluster and add-steps examples.
Update get_waiter to use new interface

I've added tests for this function (was previously untested)
to ensure we don't regress on this again in the future.
Update CHANGELOG with bugfix
Call super() in ConfigureCOmmand

Fixes an issue when you try to access the arg_table property,
which was breaking our html doc builds.
Merge branch 'emr-waiter' into develop

* emr-waiter:
  Update CHANGELOG with bugfix
  Update get_waiter to use new interface
Merge branch 'configure-arg-table' into develop

* configure-arg-table:
  Call super() in ConfigureCOmmand