(module development feature) checking for arguments being required together, mutually exclusive, etc

I've made some additions to the module common library, which makes it easier to check for complex input requirements.

This makes Python modules easier to write when simply stating which arguments are required or not is insufficient.

I've modified the "pip" and "yum" module to use these, which should save any module writing this kind of code from having to implement these things on their own, keeping each module shorter and quicker to develop.

Here are some examples:

# yum module
module = AnsibleModule(
    argument_spec = dict(
        name=dict(aliases=['name']),
        state=dict(default='installed', choices=['absent','present','installed','removed','latest']),
        list=dict(),
        conf_file=dict(default=None),
    ),
    required_one_of = [['name','list']],
    mutually_exclusive = [['name','list']]
)

# pip module
module = AnsibleModule(
    argument_spec=arg_spec,
    required_one_of=[['name','requirements']],
    mutually_exclusive=[['name','requirements']],
)

Basically these are lists of lists, so multiple types of checks per module can be specified.

These new parameters are optional and default to not doing anything.

--Michael