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
Change syntax from ':' to '='

Based on feedback.
Add error messages for improper separators

If they use ':' instead of '=', we want to give them a good
error message.
Add tests for doc generation
Cleanup code, add docs.