Rework page callback and options APIs

Makes them a bit more consistent. Callback now receive a page instance and all url handling is done via path parameter.
Remove unnecessary timeouts in emit flow