Refactor navigation event handling.

*   Introduce new events and request callbacks to more consistently provide
    parity between the two.
*   Use dedicated functions to dispatch events and callbacks to ensure the
    custom event detail objects and callback arguments are identical.
*   Add events for handling clicks and history changes, allowing them to be
    canceled to prevent navigation.
*   Deprecate the old events and callbacks.
*   Update the demo app to use the new events.

Progress on #12.
You flipped both the return and the variable, so the naming is still inconsistent. The usage above matches the return type (False is cancel), but that doesn't match a variable being named canceled (which would imply true is canceled).