Pr/forward_before_hook - making forward behave..

Make `forward` (and `redirect`) in before hooks behave as @xsawyerx commented in #389.

The response from a `forward` is inserted into the current context and flagged as halted. This causes the route handler not to run returning the response form the forward as the response from the original request.

Similarly `redirect` in a before hook also flags the response as halted so the redirect occurs instead of the route handler running. (This may not be desired - I'm leaving this up to reviewers!)

Update docs to use `forward` instead of altering `request->path_info` in before hooks.