Implement reverse JMESPath support to build params

This adds proper reverse JMESPath support so that we can now build all
parameters properly. The following did not work before, but does now
because we can build up the filters array structure:

```python
ec2 = boto3.resource('ec2')

instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-type', 'Values': ['m1.small']}])

for instance in instances:
    print(instance.id)
```

Tests are added to cover the various cases of `dict` and `list`
combinations.
Support brackets without indexes.

Some of the resource files still use them, so we'll support them for
the time being. In the future this could be removed to simplify the
code slightly.
Merge pull request #19 from boto/reverse-jmespath

Implement reverse JMESPath support to build params.