Rex::Output to persist across different processes (forks)

It does not persist. for instance, creating a batch of tasks and
running:
rex -o JUnit -b batch_name

junit xml file will include *only* the very first task and not an
aggregation of all the tasks executed during the batch, this is because
the JUnit destructor will be called after the first task's process is
completed, the junit file will be written and any subsequent call wont
do what it needs to.

Using IPC::Shareable to share the object across different processes in
addition to some design changes.
perltidy