chore(routing): Redirect handlers now return the new URL

Instead of explicitly calling `forward()`, which reduces flexibility.
E.g. now we are free to do an "internal" redirect instead of sending
the redirect all the way back to the browser.

Fixes #105