This commit was manufactured by cvs2svn to create branch
'Boost_Jam_994'.
Patch from Noel Belcourt, with some minor changes for portability. Implements action output deferral to sync the output regardless of -jn.
Add test for -jN actions.
Complete implementation of Ticket #994 (Parallel Bjam output is jumbled).

I removed the signal handling code from jam.c as it's no longer needed.

Changed the execcmd function signature to pass two additional arguments,
the rule name and the build target.  These are no longer output in make1.c
as we need to defer their output until the command completes and we have
all the stdout and stderr output.

Fixed the various hangs and zombie children problems in execunix.
Changed make1.c to pass null pointers for the rule and target so as to
identically replicate the original bjam output.
Match up the execcmd args.
*** empty log message ***
Fix non-Unix case of exec to that is outputs the action headers as usual.
*** empty log message ***
Fixed missing io dup, for both stderr and stdout.
Add logic for separating stdout and stderr.  This solution is commented out
with #if 0 right now although it has been tested and is fully functional.

The default implementation is to merge stdout and stderr into a single stream.
Change mem allocation to use common macros.
Use atomic allocs as needed. Remove obsolete win32 code.
Added support for bjam -px options per discussions with Rene Rivera.
Added copyright notice.
Fix a file descriptor that wasn't getting closed.
Add check on pipe descriptor values.
Added initial dart support to execcmd and make1.

Updated the execcmd closure function signature to pass the executed
command string and the command output into the make_closure function.
Passed the executed command and command output into the call_dart_rule function.
Passing the executed command and the command output to the dart rule, finally.