Sheriff-o-matic navigation between failure stream and examine pages

This is the first step in using client-side routing for
permalinking/history. You can move back and forward between trees and
"examine" pages, although for any given failure group, the specific test
and bot (if there are multiple) is not remembered or linked to yet.


The magic happens in ct-router, ct-view, and ct-view-handler.

ct-router drew heavily from esprehn's CodeReview tool, before he
removed his custom router. Unlike some other routers, ct-router doesn't
destroy & recreate views when navigating (thus helping us retain page state)
and uses /slash/URLs, not #hashes.

ct-view performs path matching and binds variables to its first child as
attributes.

ct-view-handler, when included in a component, neuters <a href> links in
that component. The links then defer to ct-router instead of navigating
directly.

RUNNING

This is up and running at http://sheriff-o-matic-router.appspot.com.
Please try to break it. The objective, and the problem, with this
approach is that we rely on the URL to indicate which results to show,
instead of just pass the objects to be displayed directly to the components
that use them. So the router approach means the app becomes more fragile.
Kind of.

python -m SimpleHTTPServer won't work here. Use "dev_appserver.py ."


Example URLs (will become stale):
Blink failures: http://sheriff-o-matic-router.appspot.com/blink
Specific failure: http://sheriff-o-matic-router.appspot.com/blink/failure/ash_unittests%3AVirtualKeyboardUsabilityExperimentTest.VirtualKeyboardWindowTest
Trooper failure: http://sheriff-o-matic-router.appspot.com/trooper/failure/cq_latency%3A%3Achromium

BUG=400400
R=ojan@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/564033002

git-svn-id: svn://svn.chromium.org/blink/trunk@183012 bbb929c8-8fbe-4397-9dbb-9b2b20218538