Update s3 website to honor --error-document argument

When both --index-document and --error-document options are supplied,
--error-document argument was ignored.
Update s3 website to honor --error-document argument

When both --index-document and --error-document options are supplied,
--error-document argument was ignored.
Merge branch 'fix-s3-get-bucket-website' of github.com:quiver/aws-cli into fix-s3-get-bucket-website
test each command in separate test case
Flatten CloudSearch commands arguments
Code review feedback

* Updated documentation
* FlattenCommands -> FlattenArguments
* modify_args -> flatten_args, _find_nested_arg, _merge_member_config
* service -> service_name
* CLI registration is separated from object instantiation now
* AssertIn for tests
* Added a test for list types
* Added type to FlattenedArgument
* Fix CloudSearch argument hydrating to use correct types
* Some refactoring
Add CloudSearch tests
Move CloudSearch out of preview
Update changelog
Merge pull request #730 from danielgtaylor/cs-flatten

Move CloudSearch out of preview. Fixes #730.

Adds customizations to make using CloudSearch easier from the commandline.
Remove preview from CloudSearch in README
Fix py3 test failure for cloudsearch customizations

The issue is two fold.

1. We're flattening a top level expression, but replacing it with a
   nested parameter.  That is, "expression" is the top level key, but
   we want to flatten "ExpressionValue" to "expression", which is the
   same name.  There's a bug in the code where we lookup the arg table
   every time we flatten an arg.  In order to fix this, ExpressionValue
   (the thing taking the same name as the top level arg) needs to be
   last.
2. Point 1 shouldn't matter :)  We should take a reference to the
   argument object from the arg_table and use that for the duration
   of the replacement of any argument we flatten under that top level
   key.

We ran into this bug because with py3's hash randomization we're not
guaranteed to iterate over the flattened args in-order.  So I switch
to an OrderedDict.  I also implemented (2), which is to keep a reference
to the argument object while flattening nested args associated with the
same top level param.

Verified that running the tests in a loop 20 times didn't generate
any test failures.

cc @danielgtaylor
Merge branch 'quiver-fix-s3-get-bucket-website' into develop

* quiver-fix-s3-get-bucket-website:
  test each command in separate test case
  Update s3 website to honor --error-document argument
  Update s3 website to honor --error-document argument
Update CHANGELOG.rst with latest changes

Also cloudsearch is *not* part of 1.3.5 so moved it out of that
section.