Add pagination support to Operation class

Now in addition to call, you can have a paginate method
that will use the pagination configs in the model to
automatically fetch new pages of results.

The logic for pagination has been extracted into its own module.
Add py_input_token when building pagination configs

The operation.call method takes the kwargs as the python
version of the arg name (e.g. next_token not NextToken).
Rather than doing this at runtime, I added a py_input_token to
the model that is added during build time.

If we need to manually override this process, we can just add
py_input_token to the .extra.json files ourselves, and they will
be used instead.
Update paginate to use the py_input_token key
Add basic integration tests for pagination

These test ec2 and rds operations that can paginate
by default (typically describe* calls that have a large
enough response size to warrant pagination).

These require the updated pagination configs in the models
in order to pass.
Add docstrings to pagination methods
Add jmespath as a dependency
Add support for 'more_results' key

Some services (such as IAM) provide an 'IsTruncated'
flag that indicates whether or not there are more results.
Add pagination configs for supported services
Update requirements.txt