fix following redirects
Addresses #5739 and cleans up copy.py

The copy action_plugin is not easy to read. Part of this commit is taking that file, restructuring it, and adding comments. No functionality changed in how it interacts with the world.

The fix for #5739 ends up being the assumption that there is a cleanup 'rm -rf' that happens at the end of the copy loop. This was not the fact before and we made a bunch of tmp directories that we hoped would end up being cleaned up. Now we just use the tmp directory that the runner provides and cleanup inline if it is a single file to be coppied or after the loop if it is a recursive copy.

As a part of this we did end up having to change runner to provide a flag so that we could short the inline tmp directory removal. This flag defaults to True so it will not change the behavior of other modules that are being called.
Dug into the remaining FIXME and replaced with comments to document the expected behavior.
Added port documentation to postgresql_db and postgresql_user
Merge pull request #5826 from romeotheriault/fix_follow_redirects

A fix for uri module regarding following redirects. The old behavior would follow redirects either way. This change clarifies the functionality and makes it a bit more explicit. Comparing the old behavior to the new 'yes' == 'all', 'no' == 'safe' and now 'no' will not follow any redirects. Historic behavior is still supported and documented with a push to the new values.
Return a tagged_instances list for hosts that matched the count_tag
Check mutually_exclusive parameters before applying defaults
Make ec2 exact_count and count mutually exclusive
Support for -a to accept a file with test-module

If the CLI value for -a starts with an @, treat it like a file, and dump the contents into complex_args

This supports yaml or json.
Merge pull request #5906 from sivel/test-module-json

Support for -a to accept a file with test-module
Merge pull request #5885 from risaacson/issue5739_4

Addresses #5739 and cleans up copy.py
Merge pull request #5905 from artursvonda/update-postgresql-docs

Added port documentation to postgresql_db and postgresql_user.
This patch makes Ansible reuse fork allocation between seperate instantations of the runner API, therefore the overhead of recreating forks
between tasks in a playbook is avoided.  The fork pool will be regenerated when a second play comes along and needs more hosts.
Add the fork manager code (related to previous patch).
Revert "Add the fork manager code (related to previous patch)."

This reverts commit adb1719fe8bd61b2537e84ffdc7b5ffac2f68620.
Revert "This patch makes Ansible reuse fork allocation between seperate instantations of the runner API, therefore the overhead of recreating forks"

This reverts commit 85d66b9a0c87849c7a83099141e5b2b4731abbe5.
Revert "Revert "Add the fork manager code (related to previous patch).""

This reverts commit c53538dc77b46b50d50d4307d3d41616bd45a341.
Revert "Revert "This patch makes Ansible reuse fork allocation between seperate instantations of the runner API, therefore the overhead of recreating forks""

This reverts commit 6685b4989e0763793e7b87170027af40f634ce46.
While the previous work on the foon class can't be quite recycled, it's still a nice abstraction.
Micro-optimization of inventory.expand_hosts.detect_range