Improve comments in Viewport handler
Remove unneeded mouse handling code

Related to the recent selection tool overhaul.  Boundary-checking must
be done on a per-tool basis, as different tools have different boundary
needs.  This makes the core mouse handling functions much simpler.
Convert selection method to a "selection mask" system

This is a big change, and it is required for everything from free-hand
selections to simple modifications like "grow selection" or "feather
selection".

There is still a fair amount of work to do to optimize the selection
system, and also to properly handle things like on-canvas resizing for
non-rectangular selections, but the mask technique now works flawlessly
for rendering the selection itself.