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

@fariza Both points applied here (as discussed in workflow, or should I send as a PR to your branch?):
https://github.com/OceanWolf/matplotlib/compare/fariza:navigation-toolbar-coexistence...navigation-toolbar-coexistence-event-framework

I still don't quite like the structure of ``tools.tools``, it seems a bit messy having separators in there, as they do not act as a ``tool``.

Given that you accept this new API method ``addTools``, I propose the following changes for the attribute ``tools`` to:
```java
tools: (tool | tool_group, tool | tool_group, ...) where
tool_group: (tool, tool, ...) and
tool: (name, class, in_toolbar)
```
where a separator gets automatically placed between groups.

Just looked back at your comments in #3232 and see that you proposed something similar wrt ``add_tool``.

Shall I code these changes up?