Update CLI to work with normalized botocore models

This is a backwards compatible change that udpates the CLI to
work with the new model format exposed in botocore.  The biggest
change here was the removal of botocore parameter objects.  The
botocore paramter objects were separated into various modules,
so the CLI needed to be updated to account for this.

This also made the distinction between the CLI and botocore more
distinct.  Previously botocore parameter objects had things like
`cli_name` in them.

Essentially, anything that previously took a botocore param object
now takes one of two things:

* the awscli.argument.BaseCLIArgument type
* the botocore.model.Shape type

The former has various capabilities specific to the CLI (what the
CLI name is, what it's CLI type is, etc.).  The latter has information
about the expected structure of the value of that argument.  This is
used for things like shorthand processing.

Depends on: https://github.com/boto/botocore/pull/340

cc @danielgtaylor @kyleknap