Factor more behavior into the _SelectorWidget class.
Fix indentation
Put onselect in __init__, fix syntax error, make sure lines are animated.
Add tests for the selection widgets
Remove private event handling methods to allow for subclassing old api
Remove draw_rubberband and minor cleanup
Add to default_test_modules
Attempt to fix affine transform error
Fix affine transform error
Add test cleanup decorator
Move cleanup to the individual checks
Fix failing tests
Fix pep8 error
Improve handling of out-of-bounds releases
Revert changes to setupext.py
Style change and use self.blit instead of blit.
MNT : pep8 + pyflake changes

 - strip white space
 - rearrange 'not's
TST : ensure canvas drawn before testing widets

Widgets assume that the canvas has been drawn atleast once
before they are called (which is reasonable for interactive usage
as the user needs to be able to _see_ the gui before they can
interact with it).  Ensure that the tests draw the canvas
before trying to use the widgets.  Doing this allows for removing
some of the error handling logic from the widgets.
Merge pull request #3502 from blink1073/improved-selection-widget

ENH : selection widget refactor