Add front/backend routing using RouteSwitch

* Let front-end handlers use other front-end handlers for sub-requests

* Switch to back-end handlers when the same front-end route would be matched,
  or if there is no matching front-end handler.

* Add a trivial mock backend handler