continues refactoring widgets

moves more code and widgets from HomePage into holding area (snippets
and widgets/)

passes Play a prefixed Router - the Play page will be under /play/...
but it gets a Router with the prefix set to /play so it still only
has to deal with /game/123 etc (but the actual urls will be /play/game/123).
the currentPath on a prefixed Router where the url doesn't have the
prefix will be null, and it won't send UrlChanged events or bother
trying to match the route when the url changes to another one that
doesn't match the prefix.

cleans up HomePage.  splits the main nav bar into nav and user menu.
updates Play nav style - smaller, lighter, align right and more padding
continues refactoring widgets

updates routing code to use new routing library - Router has
been split into Router, Path and _Route.

Path now abstracts window.location.pathname and the history api
and is the only thing that needs to be a "singleton" - all navigation
must go through Path.set, as the routers use Path.Changed and there
is no built in way of detecting the url change caused by history.pushState.