Improve memory management of factory processes. Issue: #3557

1. limit the number of forks that do check_and_perform_work. Controlled by entry_parallel_workers in <glidein ...> Positive value implies max number of entry processes forked to do the work at a given time. Value of 0 implies dynamic contolled based on the memory. Assumming 80M per entry process forked, if the system has atleast 80M free, a new worker will be forked, if not, entrygroup process will wait for the memory to be available.

2. EntryGroup also now actively processes the finished workers spawned. This prevents zombie python processes that were observed in v2_7_rc1.

3. Do better pipe management so that subsequent children close the pipes used by their siblings as well