AbstractOutputStage is now identical to AbstractStage

Still, we use the inheritance hierarchy to decide behaviour for
processing. We want to change this later. I think a good way to
think about it is that an output stage is just like a regular
stage except that it’s last in the pipeline.
Removed DocumentDiscardStage

I am unsure what the use case for this is. I think there’s a better
way to do it once I understand the use case.

I deleted it because it uses “markDiscarded” which doesn’t fit into
the overall design in my refactoring.
Javadoc fixup
Abstract*Stage are now (almost) empty!

* Abstract*Stage only exists for backwards compatibility!
* ProcessStage & OutputStage are the new interfaces
* ProcessStageRunner is responsible for running a ProcessStage on a
  LocalDocument, doing error handling and timeouts.
* StageThread takes over the “fetch from pipeline” responsibility,
  delegating the processing to ProcessStageRunner
* Now uses jackson (partially) for instantiating classes from a
  Map<String, Object> instead of ParameterSetter (being removed soon
  I hope).