transition example
Simplify promise-handling code
Re-throw errors from transition hooks

Fixes #21
Update app.js
Throw when a router cannot match the URL

This may not be a complete solution to #20, but it's better than
just showing nothing on the page and no error in the console to
indicate why.
Remove reduceRight, no longer applicable
transitionTo breaks the promise chain

Since we're effectively breaking the promise chain in the rejection
handler, we should just break the promise chain cleanly.
Fix broken specs
Use React-style singleton and names
Add URLStore spec
Use React-style singleton and module name
Ensure routers are only rendered once
Fix regression
Include query string when retrieving window path

Seems query string routing as only working in hash-mode, this tiny fix makes sure `getWindowPathname` uses both `pathname` and `search` properties of the location object.
Style tweak
Add URLStore.back
Add Router.dispatch

This function synchronizes URL dispatch to a group of routers, waiting
until all have run their transition hooks before proceeding with the
transition. It's also responsible for handling cancelled transitions
and knows how to handle redirects and aborts.

In the case of an abort, the URL reverts to whatever it was before the
last change. Routers remember their current state, so this is essentially
a no-op as far as they're concerned.

Fixes #22
Merge pull request #23 from sbrekken/patch-1

Include query string when retrieving window path
Better function name