Created SelectionModeHandler class.

Also implemented it in MagicWandTool, replacing some of the MWT's code.
Finished implementing selection features.

A PreviousSelection variable was necessary to add in order for the three
SelectTools (not including the MagicWandTool) to work, as they have two
different selections going on at once until the mouse is released. This
then required the storage/restoration/management of the
PreviousSelection in SelectionHistoryItem.
Fixed many selection bugs.
Fixed selection flashing/drawing bug.
Fixed a DocumentSelection.DisposeSelection error.
Fixed another Selection Dispose error.
Fixed two Line/Curve Tool bugs.

Fixed a bug that occurs with the shift key when modifying a control
point's position and a bug when attempting to create a new line outside
of the Image bounds.
Fixed an error and re-added drawing outside Image bounds ability.

Fixed an error caused by shift-clicking outside of the Image bounds and
re-added the ability to draw outside of the Image (this time while
holding the Ctrl key).
Merge branch 'SelectionImplementation' of https://github.com/mono-soc-2013/Pinta into mono-soc-2013-SelectionImplementation

Conflicts:
	Pinta.Tools/Tools/LineCurveTool.cs
Merge branch 'mono-soc-2013-SelectionImplementation'

This implements the union/exclude/xor/intersect modes for all selection
tools, and also includes a few bug fixes for the curve tool.