##### SUMMARY
When attempting to set no password expiration policy botocore spits out lovely validation errors:

```
The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_iam_password_policy_payload_gn34QS/__main__.py", line 140, in update_password_policy
    HardExpiry=pw_expire
  File "/usr/lib/python2.7/site-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(**params)
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 312, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 575, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/usr/lib/python2.7/site-packages/botocore/client.py", line 630, in _convert_to_request_dict
    api_params, operation_model)
  File "/usr/lib/python2.7/site-packages/botocore/validate.py", line 291, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
ParamValidationError: Parameter validation failed:
Invalid range for parameter MaxPasswordAge, value: 0, valid range: 1-inf

fatal: [it-cloud-aws-login -> localhost]: FAILED! => {
    "boto3_version": "1.4.6", 
    "botocore_version": "1.6.0", 
    "changed": false, 
    "invocation": {
        "module_args": {
            "allow_pw_change": true, 
            "aws_access_key": null, 
            "aws_secret_key": null, 
            "debug_botocore_endpoint_logs": false, 
            "ec2_url": null, 
            "min_pw_length": 14, 
            "profile": null, 
            "pw_expire": false, 
            "pw_max_age": 0, 
            "pw_reuse_prevent": 6, 
            "region": null, 
            "require_lowercase": true, 
            "require_numbers": true, 
            "require_symbols": true, 
            "require_uppercase": true, 
            "security_token": null, 
            "state": "present", 
            "validate_certs": true
        }
    }, 
    "msg": "Couldn't update IAM Password Policy: Parameter validation failed:\nInvalid range for parameter MaxPasswordAge, value: 0, valid range: 1-inf"
}
```

I tried 

- not passing a value: `Couldn't update IAM Password Policy: Parameter validation failed:\nInvalid type for parameter MaxPasswordAge, value: None, type: <type 'NoneType'>, valid types: <type 'int'>, <type 'long'>`
- Passing '0': `Invalid range for parameter MaxPasswordAge, value: 0, valid range: 1-inf`
- Passing 'inf': `argument pw_max_age is of type <type 'str'> and we were unable to convert to int: <type 'str'> cannot be converted to an int`

It would appear that botocore expects you *not* to pass a value, at which point it sets it automatically to 0...
 
##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
iam_password_policy

##### ANSIBLE VERSION
```
$ ansible --version
ansible 2.8.1
  config file = /home/mchappel/.ansible.cfg
  configured module search path = [u'/home/mchappel/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 11 2019, 12:19:05) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
```

##### CONFIGURATION
```
DEFAULT_CALLBACK_WHITELIST(/home/mchappel/.ansible.cfg) = [u'timer', u'profile_tasks']
HOST_KEY_CHECKING(/home/mchappel/.ansible.cfg) = False
RETRY_FILES_ENABLED(/home/mchappel/.ansible.cfg) = False

```

##### OS / ENVIRONMENT
RHEL7
```
python2-botocore-1.6.0-1.el7.noarch
python2-boto-2.45.0-3.el7.noarch
python2-boto3-1.4.6-1.el7.noarch
```


##### STEPS TO REPRODUCE
```
---
- name: 'Password policy for AWS account'
  iam_password_policy:
    state: present
    allow_pw_change: yes
    min_pw_length: 14
    require_symbols: yes
    require_numbers: yes
    require_uppercase: yes
    require_lowercase: yes
    pw_reuse_prevent: 6
    pw_expire: false
    pw_max_age: 0
```

##### EXPECTED RESULTS

Policy successfully set with no password expiry

##### ACTUAL RESULTS
Errors (see above)
module = AnsibleAWSModule(
        argument_spec={
            'state': dict(choices=['present', 'absent'], required=True),
            'min_pw_length': dict(type='int', aliases=['minimum_password_length'], default=6),
            'require_symbols': dict(type='bool', default=False),
            'require_numbers': dict(type='bool', default=False),
            'require_uppercase': dict(type='bool', default=False),
            'require_lowercase': dict(type='bool', default=False),
            'allow_pw_change': dict(type='bool', aliases=['allow_password_change'], default=False),
            'pw_max_age': dict(type='int', aliases=['password_max_age'], default=0),
            'pw_reuse_prevent': dict(type='int', aliases=['password_reuse_prevent', 'prevent_reuse'], default=0),
            'pw_expire': dict(type='bool', aliases=['password_expire', 'expire'], default=False),
        },
        supports_check_mode=True,
    )
    resource = IAMConnection(module)
    policy = resource.connection.AccountPasswordPolicy()
    state = module.params.get('state')
    if state == 'present':
        update_result = resource.update_password_policy(module, policy)
        module.exit_json(changed=True, task_status={'IAM': update_result})
    if state == 'absent':
        delete_result = resource.delete_password_policy(policy)
        module.exit_json(changed=True, task_status={'IAM': delete_result})
if __name__ == '__main__':
    main()