Add dispatching with route traversal.

When dispatch is called the routes hash is traversed to match
all responders.

**Known issues:**
- We recurse before pushing the matched action to the actions array
  which causes responders to be called in reverse order.

@barnabyc @flahertyb