Dispose context if request handler fails.
Restore the snapshot rendering in our custom-routing world.

Doing snapshot rendering requires a little more code now that we're handing
routes in a special way, but this commit restores the snapshotting behavior
back to how it used to be. We don't yet have the client doing
server-defined routes. That comes next.
Remove the legacy implementation.

This was the implementation we used before we started providing our own
$route implementation. It doesn't work anymore and is no longer needed
anyway.