Major cleanup. Forking by node instead of by processor
Rewrite to support threaded processing as an add-on
Found issue causing fatal error at end of import

When using threaded import we have to be careful to close the DB connection before any other tasks in each thread.
This is required as the DB resource handle is no longer valid after the fork

Additionally, the parent process has to wait on all of the child processes to complete and this causes the db connection
of the parent to be closed due to inactivity and a short timer on the DB server.  To solve this problem the connection
in the parent should be closed right after all the children have finished to ensure a fresh connection is opened.

id:19661
#12889 - clear out messages array at beginning of each run
Change try/catch block to stop processing element on first exception
Add exception used to indicate early termination from processor loop for single element
Change how skip exceptions are processed
Added support for URL to log files in email

id:20279
#20740 - formatting change for total time duration