MEP22 Navigation toolbar coexistence

This version of the MEP22 implementation https://github.com/matplotlib/matplotlib/wiki/Mep22#implementation 

The proposed solution is to take the actions out of the `Toolbar` and the shortcuts out of the `Canvas`. This actions and shortcuts will be in the form of `Tools`.

A new class `Navigation` is the bridge between the events from the `Canvas` and `Toolbar` and redirect them to the appropriate `Tool`.

Yes, but not too much extra work, only a 5 lines of extra code, per backend I would imagine; and makes the method calls clearer, especially in the future if/when other method for selecting tools come about.

If the extra work remains the only concern, then the ``_toggle`` method could get taken out of the specific backends entirely, replacing the ``_toggle`` method with a ``_set_state`` method, with ``ToolbarBase`` still having a ``toggle`` method, but it can do the logic of which state to set instead of the specific toolbar.  Taking ``ToolbarGTK3`` as an example this would use even less code.

Taking these ideas one step further, what do you think about replacing my suggested codeblock above with something more like:

```python
event = ToolToggledEvent(tool)
self.callbacks.process('tool_toggled_event', event)
```
where the argument passed to ``ToolToggledEvent``, either the name and the state, or the tool itself (which should encapsulate those two items).

Through something like this we generalise the toggling mechanism, and allow for an arbitrary number of observers, say for example someone in the future wants to add a right click menu with tools inside.