A special type of play.api.mvc.Handler which allows custom logic to be inserted
during handling. A Stage accepts a RequestHeader then returns a new
RequestHeader along with the next Handler to use during request
handling. The next handler could be a terminal Handler like an
EssentialAction, but it could also be another Stage. This means
it's possible to chains of Stages that should each be executed in turn.
To automatically execute all Stages you can call play.api.mvc.Handler.applyStages.