Support escaping and quotes for shorthand params

Add support for::

    --foo key=one,value=one\,two\,three
    --foo key=one,value="one,two,three"

Note that for the escaping case, in bash you'll have to
literally type '--foo key=one,value=one\\,two\\,three'
because bash will also interpret the '\' char so you have to
escape the '\' so bash will leave it alone.
Use six compat for advancing iterator

iter.next() not in python3.
Fix test to acutally check quoted return value

Split them into separate tests as well.
Allow for single quote chars in csv values

In windows, users have to use single quotes because
cmd will consume the double quotes before it hands the
args to python.
Merge branch 'cfn-param-shorthand-fix' into develop

* cfn-param-shorthand-fix:
  Allow for single quote chars in csv values
  Fix test to acutally check quoted return value
  Use six compat for advancing iterator
  Support escaping and quotes for shorthand params
Merge branch 'develop' of git://github.com/garnaat/aws-cli into garnaat-develop
Return value from help command

Even though this command will call sys.exit, we still
want it to return, if nothing else for clarity.

This also helps for testing purposes as well.

I added a start of tests for docs to make sure that we don't
break help output in the future.  I plan on greatly expanding these
tests as needed.
Fix lint warnings

No functional changes.
Add tests for JSON and shorthand syntax docs
Add tests for argument/command orderering

To get these tests to pass, I added back the OrderedDict
usage that was missing.  This also requires a bug fix
to bcdoc for all the tests to pass.
Add test for examples section in operations help
Add rendered doc content to failure message
Make use of the start_index when searching for the args in the string.
Update docs with correct authorize-security-group-ingress call
Updated json file example as well

It also needed to add the ``cidr_ip`` key.
Unify boolean params

Required and optional boolean params are treated the same.
For every option 'foo', you get:

* --foo, which, if set, will send the param as a True value.
* --no-foo, which, if set, will send the param as a False value.
* <don't specify>, which will not send the param to the service.

There's still some docs work as currently you get the same docs
for both positive and negative params.
Fix streaming output arg customization

I noticed that there actually are unit tests for this, but
we weren't checking the RC of the run command, only that the request
params looked how we wanted them to.  As a result, I've updated the
base test class to check for expected RCs from the commands that are
run.  This caused the tests to fail and should ensure that if we
break the streaming output arg customization, we'll get a test failure.
Update integration test to check for Amazon EC2

This is just due to the way the docs were being rendered
so I picked a more reliable doc string change.

All the integration tests are passing.
Change event name of top command table

Now that the root command table is 'building-command-table'
and service subcommands are 'building-command-table.servicename',
this makes it hard for a handler that wants to add a new top level
command as they have to parse the event name.  In this change,
the handlers can subscribe to 'building-command-table.main' which
makes it easy to subscribe to the event you want.
Merge pull request #178 from jamesls/main-command-table

Change event name of top command table