Encapsulates a series of related Tasks intended to be run by the TaskManager as a single, composite unit of work.
Provides a concrete implementation of the BaseChain abstract class
All tasks added to the Stage - via {@code addToStage()} or passed in on the Constructor - must be completed before the Stage is considered complete.
Only after all Tasks in the Stage have completed with status of SUCCESS, will the next series of Chained Tasks be queued for execution. If any task within the Stage has FAILED, then the Stage itself will be considered FAILED and all subsequent, chained tasks will be CANCELED.
Stage is a special case of Task that blocks on the completion of its staged tasks, and therefore it is handled by its own queue inside of the TaskManager.
@see Task
@see BaseChain
@see com.level3.meanwhile.state.TaskStatus
@author Jonathan Griggs
@since 0.2