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