Adds possibility to throw a ProcessingException after a configurable timeout, unless the document was processed. If processing times out and cannot be cancelled, the stage will trigger JVM shutdown.

Restructures tests for AbstractProcssStage.
Made Main implement a TerminationHandler. Removed all static modifiers in Main. Passed a refrence to main to NodeMaster that passes it to StageRunner

Updated tests to take a mock of TerminationHandler
Added a stage that gets stuck in an infinite loop and never returns. For example used for testing how your pipeline handles failing libraries that never returns

Added a stage that throws an uncaught runtime exception. Used to test how your pipeline handles unexpected runtime errors
JavaDoc and format cleanup

Cleans up structure and spelling

Removes unused imports

Removed template comments from ConcatenatingHashStage
Adds tests for execution timeouts.
Adds StageKiller to allow for tests that check if stages are killed.
Adds TODO about writing tests that check Stage kills.
Makes tests for AbstractProcessStage follow the same naming convention
Renames TerminationHandler for consistent naming. Adds note to InfiniteLoopStage to clarify that it can't be interrupted.