a client-side router with support for middleware, click-delegation, and hash-based fallbacks