Entity Tool Updates

Sorry for the large PR.  A large part of it is cleanup and generalizing the stretch code for resizing entities.  This is still a WIP.

Changes:
  * Multi-selection using SHIFT + Left-Click
  * World and Local-space editing modes, toggled by pressing TAB
    * Stretching in world-space is not intuitive (no shearing), so it is disabled while in world-space.
    * Multi-selection edits only make sense in world-space, so it is the forced mode when selecting more than one Entity.
  * Generalize the "tools" (stretch/rotate/move) into tool objects, which contain onBegin, onMove, and onEnd functions.  This was mainly useful in generalizing the stretch tool code.
  * Add the ability to cancel an edit by pressing ESC