Revert "While the previous work on the foon class can't be quite recycled, it's still a nice abstraction."

This reverts commit caab52aee25e8163d0cb8add4df3d49a803f52d1.
Revert "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 73ca1a173c8ede76f19ebce5d6a018fd41e30c68.
Revert "Revert "Revert "Add the fork manager code (related to previous patch)."""

This reverts commit 60d3611b702898e64f4f132d7dc7a6d3691c54e0.
Refining the fix made in #5885.

It turns out that some of the assumptions in #5885 were slightly off. The previous fix relied on a call to the module to creat a tmp_path. This is insufficent as there are few cases that we need to have the tmp directory before we make the module call. If we don't have a tmp_path before we do a recursive call or when we find a file that does not match the remote md5 hash we need to create a tmp directory. Also we are not more percise when we will need to clean up the remote tmp_path.
Merge pull request #5912 from risaacson/issue5739_5

Refining the fix made in #5885.

Merging this quickly after PR as further testing of of earlier fix demonstrated flaws. Those flaws are now removed and tested to be removed.
Micro-optimization of inventory.expand_hosts.detect_range
Micro-optimization: replace s.find(x)!=-1 with x in s

timeit shows a speedup of ~3x on Python 2.7.5 x86_64.
It also makes the code a bit shorter.
hostname module: don't filter hostnamectl with awk

There's no need to filter hostnamectl's output with awk because its man
page says:

    hostnamectl [OPTIONS...] {COMMAND}

       --static, --transient, --pretty
	   If status is used (or no explicit command is given) and one
	   of those fields is given, hostnamectl will print out just
           this selected hostname.

E.g. hostnamectl --static status => ansible.example.org