Support JSON input for custom commands

Implements a declarative syntax for JSON input of custom commands that
includes the ability to use the CLI JSON shorthand.
Properly handle parameters with dashes.

This fixes an issue where parameters like --instance-groups would not use
the specified schema.
Add a more complex transformer example unit test
Only process values that exist
Add custom JSON parameter validation

Adds support for required traits and ensuring that parameter values are
the correct type as specified in the schema.
Fix long form JSON parsing for custom commands.

Adds tests and assertions on the args passed into custom commands.
Generate documentation for custom commands with JSON input.

Generates documentation about the JSON shorthand and long form input for
custom arguments that have a schema attribute set. The output looks
like:

```
--foo (structure) Help text goes here

Shorthand Syntax:

  --foo arg1=value,arg2=value

JSON Syntax:

  {
    "arg1": "string",
    "arg2": integer
  }
```
Add some JSON schema docs
Fix failing test on Python 2.6.x
Document logging detected structure
Make CustomArgument.schema private
Merge pull request #779 from danielgtaylor/custom-arg-json

Custom Argument JSON Input. Fixes #779.