Corrected multi-button tool lookup logic a bit. E.g.:
- Extracted a field for maintaining the tool being applied.
- Made sure the applied tool was only sent a mouse release event when
the last mouse button is released.
- Made sure the applied tool field is only set in case a new button is
pressed - one that hasn't been pressed yet in the current tool
application. A tool application doesn't end before all mouse buttons
have been released and tool to be applied doesn't change unless a new
button combination is provoked which only happens in case an unpressed
button for a "tool application session" is recognized. A "tool
application session" starts when the a mouse button is pressed and
continues as long as a single mouse button is pressed; i.e. such a
session ends when the last pressed moused button is released.

Added rollback support for bind tool.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>