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
Gah, build errors, I think a package got upgraded since I built on the now dead computer in the summer.  Bug report sent to debian on libpng12.
```
In file included from /usr/include/libpng12/png.h:540:0,
                 from src/_png.cpp:21:
/usr/include/libpng12/pngconf.h:371:12: error: ‘__pngconf’ does not name a type
            __pngconf.h__ in libpng already includes setjmp.h;
            ^
/usr/include/libpng12/pngconf.h:372:12: error: ‘__dont__’ does not name a type
            __dont__ include it again.;
```