Navigation decoupling using events

Have only made this work on TkAgg, will convert for GTK3 later.  In fixing ``ConfigureSubplotsTk``, I have noticed a marked increase in dialogue reopening time, I guess the "figure" creation slowed it down.

I have noticed problems with the home/back/forward buttons on testing, though I guess this bug already existed, so I will look into it and fix it with a separate PR later.
Do we want users adding tools to the `toolbar` directly? I think the way is through `navigation`, this method should be `self.toolbar._add_tool(name, self._tools[name], position)