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`.

Okay, I have the navigation example working! :D.

To clarify, by:
> Please include only this change so I can review it easily.

What did you consider as ``this change``?  As I have started coding, I have realised that:
1. The event code should get moved out of ``FigureManagerBase`` and into a mixin, otherwise I would duplicate code.
2. The most elegant solution IMO lies in making the toolbar aware of its tools as discussed previously, i.e. in ``ToolbarBase`` the following rough code:
```python
def addTool(self, name, tool)
  tool.mpl_connect('tool_state_changed_event', self.set_state)
  self._add_toolitem(self, name, tool.description, ...):
```
Otherwise:
* ``ToolbarBase`` needs to know of all ``Navigation``, and thus has access to all tools, and...
* The toolbar gets notified of tool status changes even if the tool does not exist within the toolbar, which I see happens at the moment and gives an error in the message area of the toolbar, which seems like an unneeded notification, and repetitive code for the toolbar which the specific backend people will have to write.