Initial bigip_node version
bigip_node: additional code

- checks if address already assigned to other node name
- add description for node
- check for node addres changes
- add missing code "node exists, potentially modify attributes"
Documentation additions and major refactor
Return of sychronize module code for take 3
Updated version_added in sychronize module
Fix to local delegate_to override and proper sudo handling from @smoothify
Removed busted tmp_dir option that was a bad idea to begin with.
Straightened out the logic for delegate handling in synchronize action module
Added ingenious change detection trick from @smoothify though at the cost of verbosity controls. (Quiet or verbosity > 1 breaks change detection. Also added better use of module_common methods.
Added archive options to sychronize module as suggested by @smoothify but with a different default scheme to keep param definitions to a minimum.
Modified changed marker in sychronize module
Added docs for archive options in sychronize module. Added missing default value for dirs option.
Added validate option to lineinfile

The validate option is constructed similarly to the template command's
validate option. TestRunner.py has been updated to include two new
tests, one for passing and one for failing validation.
Add support for Rich Rules in firewalld module
Add regex (search, match, regex) jinja2 filters. Fixes #3725
Add executable parameter to find gem binary in gem module

This is especially needed with rvm where gem binary can be in unusual locations
Fix illegal set operation in FreeBSD section of user module.
Allow generic django_management commands

This commit removes the restriction on django management commands.  If a command is unknown to the django installation, there will be a concise error produced.

for example:

  tasks:
    - name: invalid command
      django_manage: virtualenv="/valid/virtualenv" app_path="/valid/app_path" command="nowaydude"

Results in:

failed: [hostname] => {"cmd": "python manage.py nowaydude", "failed": true}
msg: stdout: Unknown command: 'nowaydude'
Type 'manage.py help' for usage.

:stderr: Unknown django command: nowaydude
Added ['date_time']['tz_offset'] using %z to get the time offset rather than time zone.
Fixed (broken) tab to (correct) spaces for indentation