allow direct path routing

If I want to do routing directly in the route function like this:
``` js
page('/', function(ctx) {
   var id = 1;
   page.replace('/client/' + id);
})

page('/client/:id', function(ctx) {
   //do something
})
```
If the path is `/`, the location would be change back to `/` instead of `/client/:id`, and that's because the dispatch function is called before saving the context, would that be better if we always save the context before dispatch?