Improved editable shape control point editing.

Also improved efficiency of ellipse generation, fixed an ellipse bug by
confirming that there's a perfect rectangle to generate an ellipse,
fixed a rectangular-based control point moving bug by updating the
opposite point's position anyways, moved repeated code into
BaseEditEngine for code efficiency, renamed some protected methods in
BaseEditEngine to start with a lower case, and moved some methods around
in BaseEditEngine for better organization.