Some code paths involve multiple layers of handling (e.g. router calls actions/ajax views) so
we must check whether the response has already been sent to avoid sending it twice. We
can't use headers_sent() because Router needs to use output buffering.