Fixed a new ControlPoint ordering bug.

Added a GeneratedPoint class to fix it. This may seem to complicate
things a little, but it was actually a necessary change in order to
maintain proper ordering of new ControlPoints added onto shapes. This is
because now, some shapes (like rounded rectangles and ellipses) do not
have any generated points overlapping their ControlPoints, which was
previously used to keep track of a generated point's order in the shape.