Add module to detect param shapes
Move unpack_cli_arg to argprocess module

No functional changes.
Add builtin plugin loading module

The arg simplifier handler is a no op right now.
Initial commit of arg simplification

Not a very elegant implementation, but the tests are passing.
There's also a bunch of asserts in there so I can verify my
assumptions while I test this further.
Move file: arg processing before process-cli-arg event

This allows plugins to see the values from the values in the
files rather than having to process/ignore the file: arg
themselves.
Change file prefix from file: to file://

Exact same semantics as before except the prefix has to be file://.
This was done to prevent a conflict when using the shorthand notation
for complex param (we wouldn't be able to tell the difference between
the file: prefix and a key named 'file' or 'http' of 'https').

Docs updated as well.
Generate rst help in awscli process

This will allow plugins the chance to modify the docs before
generating the rst contents.
Add hook for supplementing example docs
Update unit tests with shorthand arg syntax tests
Add help text for shorthand param syntax

Requires f4877d9d6d5ab6e8059bd4c0cbecf0e0496affa6 from bcdoc
which emits an event when generating parameter syntax examples.
Add error messages on param processing errors
Update README.rst

Fix hyperlink formatting.
Merge branch 'develop' of github.com:aws/aws-cli into develop
Remove command wrappers around rstgen.py. No longer needed now that it is done in-process.
Honor the PAGER and MANPAGER environment variables, if present.  Fixes #121.
Remove erroneous paragraph in Complex Parameter Input section.
Cleanup error message when specifying invalid choice

This adds some basic formatting so choices are presented like:

operation-name1        | operation-name2
operation-name3        | operation-name4
longer-operation-name5 | operation-name6

I set the number of choices per line to be 2, which at 40 chars width
(which works for the majority of services) will still look ok
for people with 80 char width terminals.  Bumping up to 3 choices
per line looks good as well, except it requires 120 chars of space.

I've also added an auto suggest so that if you mistype a command we
try to offer suggestions to use, so for example you'll now get something
like:

Invalid choice: 'list-buckest', maybe you meant:

  * list-buckets

I'm using the built in get_close_matches which isn't based on the
minimal edit distance, but setting a threshold to 0.8 similarity
seemed to work well in practice, and we don't have to include our own
levenshtein distance function.
Merge branch 'suggest-command' of git://github.com/jamesls/aws-cli into jamesls-suggest-command
Rename test to test_helper

So we can group all the help related tests in a single file.
Fix help bug in python3

Anything that feeds into subprocess's pipes needs
to be of type bytes, and in python3 we weren't encoding
to a bytes object.