Removed SystemOutputStage
Output stages no longer have access to accept & fail methods

Instead, documents are automatically marked as accepted if the stage
returns without throwing an exception. A new exception
OutputFailedException can be thrown to mark the document as failed.

Probably, OutputFailedException will be removed and this will be
the default behaviour.
OutputStages are now almost identical to ProcessStages

- They only need to implement process
- If process returns without throwing exception, the document
  will be marked as “processed”
- Throwing ProcessException will set document status to “failed”
- All other exceptions will crash the JVM
Removed some unnecessary overrides that simply called super.
Merged AbstractProcessStage with AbstractStage