MEP22: Navigation by events

This PR is the implementation of MEP22, it supersedes the https://github.com/matplotlib/matplotlib/pull/2759

The main differences are:
* Navigation implement events
* Toolbar connects to Navigation events to change its sate (add/remove tools, change toggle state)
* Toolbar used `Navigation.tool_trigger_event` to trigger tools
* Rubberband and SetCursor are implemented as tools

**Edited**: for clarity
At this moment `ToggleBase` is reserved for mutually exclusive tools, basically a radio button group.
I can add another attribute `radio_group` to the `ToggleBase` to group tools in different radio groups, but I don't see the need for the extra complexity.  
I don't think the objective is to replicate the functionality of a GUI framework.