Improved on curve drawing.

Curves drawn on special Layer in UserLayer, UserLayer code improved
overall, multiple curves allowed, various improvements throughout,
improved curve history, and tension is allowed per control point
(although not yet implemented).

Still has work to be done, including fixing a small invalidation
rectangle glitch (slight remnants of selected control points are seen
when moved), finalizing work on curve history/storage, making curve
points look similar to selection points, replicating a selection bug fix
from the TextTool, adding finalization to curves when OnCommit is
called, taking curve width into account for drawing control points and
detecting mouse clicks on curves, adding right click + drag tension
functionality, spatial hashing for quicker control point detection, only
recalculating the modified segments of a curve, moving the selected
control point with the arrow keys, double clicking on an end point to
extend the curve (creating a new end point on the outside), and holding
down Ctrl to hide existing control points and ignore existing curves
(allowing the user to create new ones nearby without a hassle).