update server routes to only match explicit from and to

previous version could get in infinite loops and didn't always work; no
longer supports chaining of multiple transitions, but this is much more
reliable
redo browser routing implementation to support transitional routes consistent with server