Adding click and clickDone events to TransformControls for Gizmo interaction

This replaces [5144](https://github.com/mrdoob/three.js/pull/5144)

In addition to the aforementioned reasons, I am using these events for "undoable" change tracking in my application.  Too many objectChanged events fire when dragging around the gizmo to effectively track a single transform action.

I have added a commit of the math-only js file for two reasons:
  a) all tests now pass immediately after pulling
  b) the math functions are useful, and someone might want to use them on their own
In the past I had to save the position at mouseDown and compare it tot he position at mouseUp. If the position was the same then I wouldn't do anything. So it's basically moving the logic out of the controls.